마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

오류: java.lang.IllegalArgumentException: Timezone: GMT+09:00 is not an Olson ID

0 추천

알람어플을 만들고 있는데 저런 에러가 떠요ㅜ

@RequiresApi(api = Build.VERSION_CODES.N)
public class AlarmActivity extends AppCompatActivity {
    private AlarmManager mManager;
    private Context mContext;
    private GregorianCalendar mCalendar;
    private TimePicker mTime;
    ArrayList<AlarmData> arrayListAlarmTimeItem = new ArrayList<AlarmData>();
    public static final int DEFAULT_ALARM_REQUEST = 8000;
    private NotificationManager mNotification;
    Button btnAddAlarm;
    GregorianCalendar currentCalendar = new GregorianCalendar(TimeZone.getTimeZone("GMT+09:00"));
    private SharedPreferences sharedPref;
    private SharedPreferences.Editor sharedEditor;
    AdapterAlarm arrayAdaterAlarmList;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.alarm_activity);
        mContext=getApplicationContext();
        mTime=(TimePicker)findViewById(R.id.time_picker);
        btnAddAlarm=(Button)findViewById(R.id.savebtn);
        sharedPref=getPreferences(Context.MODE_PRIVATE);
        sharedEditor=sharedPref.edit();
        mTime.setIs24HourView(false);
        arrayAdaterAlarmList=new AdapterAlarm(mContext,arrayListAlarmTimeItem);
        mManager=(AlarmManager)getApplicationContext().getSystemService(Context.ALARM_SERVICE);
        //mManager.setTimeZone("GMT+09:00");
        mManager.setTimeZone("GMT+09:00");
        btnAddAlarm.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                int hh=mTime.getCurrentHour();
                int mm=mTime.getCurrentMinute();
                int reqCode=DEFAULT_ALARM_REQUEST+arrayListAlarmTimeItem.size();
                int i=arrayListAlarmTimeItem.size();
                arrayListAlarmTimeItem.add(new AlarmData(hh,mm,reqCode));
                sharedEditor.putInt("list"+i+"hh",hh);
                sharedEditor.putInt("list"+i+"mm", mm);
                sharedEditor.putInt("list"+i+"reqCode", reqCode);
                sharedEditor.putInt("size", i);
                sharedEditor.commit();
                arrayAdaterAlarmList.notifyDataSetChanged();
               GregorianCalendar gregorianCalendar=new GregorianCalendar(TimeZone.getTimeZone("GMT+09:00"));
                int currentYY=currentCalendar.get(Calendar.YEAR);
                int currentMM=currentCalendar.get(Calendar.MONTH);
                int currentDD=currentCalendar.get(Calendar.DAY_OF_MONTH);
                gregorianCalendar.set(currentYY,currentMM,currentDD+1,hh,mm,00);
                if(gregorianCalendar.getTimeInMillis()<currentCalendar.getTimeInMillis()){
                    gregorianCalendar.set(currentYY,currentMM,currentDD,hh,mm,00);
                    Log.i("TAG",gregorianCalendar.getTimeInMillis()+":");
                }
                Intent intent=new Intent(AlarmActivity.this,AlarmdeTimeShowActivity.class);
                intent.putExtra("time", hh+":"+mm);
                intent.putExtra("data", "알람: " + currentCalendar.getTime().toLocaleString());
                intent.putExtra("reqCode", reqCode);
                Toast.makeText(mContext, "reqCode : "+reqCode, Toast.LENGTH_LONG).show();
                PendingIntent pi=PendingIntent.getActivity(AlarmActivity.this,reqCode,intent,PendingIntent.FLAG_UPDATE_CURRENT);
                mManager.setRepeating(AlarmManager.RTC_WAKEUP,gregorianCalendar.getTimeInMillis(),AlarmManager.INTERVAL_DAY,pi);




            }
        });
    }

    @Override
    protected void onResume() {
        super.onResume();
        arrayListAlarmTimeItem.clear();
        int size=sharedPref.getInt("size",0);
        if(size!=0){
            for(int i=0;i<size+1;i++){
                int hh=sharedPref.getInt("list"+i+"reCode",0);
                int mm = sharedPref.getInt("list"+i+"mm", 0);
                int reqCode=sharedPref.getInt("list"+i+"reCode",0);
                arrayListAlarmTimeItem.add(new AlarmData(hh,mm,reqCode));
            }
        }arrayAdaterAlarmList.notifyDataSetChanged();
    }
}

   전체오류:

 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.dsm2016.alarm/com.example.dsm2016.alarm.AlarmActivity}: java.lang.IllegalArgumentException: Timezone: GMT+09:00 is not an Olson ID
 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2646)
 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707)
 at android.app.ActivityThread.-wrap12(ActivityThread.java)
 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)
 at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154

at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
Caused by: java.lang.IllegalArgumentException: Timezone: GMT+09:00 is not an Olson ID

at android.app.AlarmManager.setTimeZone(AlarmManager.java:972)
 at com.example.dsm2016.alarm.AlarmActivity.onCreate(AlarmActivity.java:58)
         at android.app.Activity.performCreate(Activity.java:6662)
      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2599)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707) 
    at android.app.ActivityThread.-wrap12(ActivityThread.java) 
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
          at android.os.Looper.loop(Looper.java:154) 
                 at android.app.ActivityThread.main(ActivityThread.java:6077) 
         at java.lang.reflect.Method.invoke(Native Method) 
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866) 
               at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756) 

 

ㅇㅇ 님이 2017년 8월 2일 질문

1개의 답변

0 추천
setTimeZone의 인수가 잘못되었습니다.

시간설정은 calendar class의 setTime메소드를 이용하세요
익명사용자 님이 2017년 8월 4일 답변
...