【问题标题】:AlarmManager not working for specific dateAlarmManager 不适用于特定日期
【发布时间】:2012-05-03 19:40:00
【问题描述】:

我一直在尝试为特定日期设置 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) 之后也没有发生任何事情。 请帮忙!谢谢!

【问题讨论】:

  • 我也有同样的问题,很烦人。如果我删除与 YEAR 和 MONTH 相关的任何内容,我会在我的系统上注意到它有效。
  • @EugenevanderMerwe 那么你找到解决方案了吗?
  • 原来我将六月存储为第6个月。实际上它应该存储为5,月份从0开始计数。
  • @EugenevanderMerwe 哦,那我应该试试。 :)

标签: android service calendar alarmmanager android-pendingintent


【解决方案1】:

感谢 Eugen 指导我。 原来是价值的问题,事实上,我将六月存储为第 7 个月而不是第 6 个月。我在这个月里加了 1,但它出现了问题。现在我已经修复了它,它现在工作正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-16
    • 2020-11-30
    • 1970-01-01
    相关资源
    最近更新 更多