我创建了多个警报应用程序。该警报会按时触发一切正常。在保存警报时,我具有每周,每天和一次添加的功能,用户可以相应地设置警报。

触发警报时。我已暂停并取消。

暂停:我已从当前时间开始添加10分钟的暂停时间
取消:只需finish()-这样它就可以触发第二天或下周(相应地)

当单击“贪睡”按钮时,我设置的所有警报都会被取消,并且仅在10分钟后触发一个警报。这很奇怪吗?不知道问题出在哪里?

这是我在Snoozeactivity中尝试过的方法(从广播接收器调用)

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(标记)吗?

最佳答案

我的猜测是您对常规警报使用了相同的ID。在这条线...


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


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

09-04 08:25