2012-05-03 119 views
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个,这是个问题。现在我已经修好了,现在工作正常。