1

특정 날짜에 대해 AlarmManager를 설정하려했지만 전혀 작동하지 않습니다! 방금 시간을 사용하면 잘 작동합니다. 무슨 일이 일어나고특정 날짜에 AlarmManager가 작동하지 않습니다.

SharedPreferences prefs = PreferenceManager 
        .getDefaultSharedPreferences(this); 
      String getEventTime = prefs.getString("EventSTime", ""); 
      String getEventDate = prefs.getString("EventDate", ""); 
      Toast.makeText(this, getEventTime + " " + getEventDate, 
        Toast.LENGTH_LONG).show(); 
      String temp = "", temp2 = ""; 
      DateFormat dateformat = new SimpleDateFormat("HH:mm"); 
      DateFormat dateformatDate = new SimpleDateFormat("dd-MM-yyyy"); 
      try { 
       temp = dateformat.format(dateformat.parse(getEventTime)); 
       temp2 = dateformatDate.format(dateformatDate 
         .parse(getEventDate)); 
       Toast.makeText(this, temp + " " + temp2, Toast.LENGTH_LONG) 
         .show(); 

      } catch (ParseException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      String getEventTimeSubStringHour = temp.substring(0, 2); 
      String getEventTimeSubStringMinute = temp.substring(3, 5); 
      String getEventDateSubStringDay = temp2.substring(0, 2); 
      String getEventDateSubStringMonth = temp2.substring(3, 5); 
      String getEventDateSubStringYear = temp2.substring(6, 10); 
      Toast.makeText(
        this, 
        getEventTimeSubStringHour + " " 
          + getEventTimeSubStringMinute + " " 
          + getEventDateSubStringDay + " " 
          + getEventDateSubStringMonth + " " 
          + getEventDateSubStringYear, Toast.LENGTH_LONG) 
        .show(); 
      hourOfDay = Integer.parseInt(getEventTimeSubStringHour); 
      minute = Integer.parseInt(getEventTimeSubStringMinute); 
      day = Integer.parseInt(getEventDateSubStringDay); 
      month = Integer.parseInt(getEventDateSubStringMonth); 
      year = Integer.parseInt(getEventDateSubStringYear); 
      int second = 0; 
//   calendar.setTimeInMillis(System.currentTimeMillis()); 
//   calendar.clear(); 
      //calendar.set(year, month, day); 
      calendar.set(Calendar.YEAR, year); 
      calendar.set(Calendar.MONTH, month); 
      calendar.set(Calendar.DAY_OF_MONTH, day); 
      calendar.set(Calendar.HOUR_OF_DAY, hourOfDay); 
      calendar.set(Calendar.MINUTE, minute); 
      calendar.set(Calendar.SECOND, second); 


      Intent intent = new Intent(MessageService.this, 
        ServiceManager.class); 
      PendingIntent callToServiceManager = PendingIntent.getService(
        MessageService.this, 2, intent, 0); 
      AlarmManager alarmToCallServiceManager = (AlarmManager) getSystemService(ALARM_SERVICE); 
      alarmToCallServiceManager.set(AlarmManager.RTC_WAKEUP, 
        calendar.getTimeInMillis(), callToServiceManager); 

에도 calendar.set(year, month, day, hourOfDay, minute, second)만을 사용 후 : 다음은 코드입니다. 도와주세요! 감사!

+1

나는 정확히 같은 문제가 있으며 너무 짜증나게합니다. 나는 그것이 작동한다는 것을 YEAR 및 MONTH와 관련이있는 것으로 제거하면 시스템에 통지합니다. –

+0

@EugenevanderMerwe 그래서 어떤 해결책을 찾았습니까? –

+1

내가 6 월을 6 월에 저장하고있는 것으로 나타났습니다. 실제로 5 개월이 0에서부터 계산됩니다. –

답변

0

나를 안내 해주신 Eugen에게 감사드립니다. 그것은 가치의 문제로 밝혀졌습니다. 사실 저는 6 월 대신 7 월으로 6 월을 저장하고있었습니다. 나는 1 달에 1을 더하고 있었고 문제가 발생했다. 이제는 문제가 해결되어 이제는 잘 작동합니다.

관련 문제