1

我创建了多个警报应用程序。此警报按时触发,一切正常。在保存闹钟时,我添加了每周、每天和一次功能,用户将能够相应地设置闹钟。

在警报触发。我有打盹和取消。

贪睡:我已经从当前时间增加了 10 分钟来贪睡取消:只需完成() - 这样它就可以触发第二天或下周(相应地)

当点击贪睡按钮时,我设置的所有闹钟都会被取消,10 分钟后只有一个闹钟会被触发。这有什么奇怪的吗?不确定问题出在哪里?

这是我在贪睡活动中尝试的(从广播接收器调用)

SnoozeActivity 的 OnCreate:

我得到了小时,分钟,上午/下午,并增加了 10 分钟并设置了闹钟。

if (ampm.equalsIgnoreCase("AM"))
  {
    ampm = "0";
        }
 else if (ampm.equalsIgnoreCase("PM"))
  {
    ampm = "1";
    }
        Calendar alarmCalendar = Calendar.getInstance();
        alarmCalendar.set(Calendar.HOUR, Integer.valueOf(hours));
        alarmCalendar.set(Calendar.MINUTE, Integer.valueOf(mins));
        alarmCalendar.set(Calendar.SECOND, 0);
        alarmCalendar.set(Calendar.AM_PM, Integer.valueOf(ampm));

        currenttime = alarmCalendar.getTimeInMillis() + 600000;

        AlarmManager am = (AlarmManager) getSystemService(Activity.ALARM_SERVICE);

        Intent intent = new Intent(SnoozeActivity.this, AlarmReciever.class);
        intent.putExtra("keyValue", key);
        PendingIntent pi = PendingIntent.getBroadcast(AlarmSnooze.this, 0, intent, 0);
        am.set(AlarmManager.RTC_WAKEUP, currenttime, pi); 
        finish();

是因为 PendingIntent(标志?)

4

1 回答 1

4

我的猜测是您在常规警报中使用相同的 ID。在这一行...

PendingIntent pi = PendingIntent.getBroadcast(AlarmSnooze.this, 0 , intent, 0);

...粗体的第一个“0”是警报 ID。如果您使用“0”作为其他警报 ID,那么您的贪睡代码将覆盖之前的警报。将贪睡警报的“0”更改为“1”(或任何其他未使用的值),您应该没问题!

于 2013-10-22T21:10:05.170 回答