检测现有警报

To detect existing alarm

我用这个函数来创建闹钟,如果已经创建了闹钟,它会取消闹钟,如果没有,创建闹钟

但它不起作用,alarmUp 永远不会为 false

如何查看告警是否存在?

public void alarm(int hour, int minutes)
{
        Intent intent = new Intent(getApplicationContext(),AlarmActivity.class);
        PendingIntent sender = PendingIntent.getActivity(getApplicationContext(), 0, intent, 0);

        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.HOUR, 24);
        calendar.set(Calendar.HOUR_OF_DAY, hour);
        calendar.set(Calendar.MINUTE, minutes);
        calendar.set(Calendar.SECOND, 0);
        boolean alarmUp = (PendingIntent.getActivity(getApplicationContext(), 0, intent, PendingIntent.FLAG_NO_CREATE) != null);

        AlarmManager am = (AlarmManager) getApplicationContext().getSystemService(getApplicationContext().ALARM_SERVICE);
        if(!alarmUp)
        {
            am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), sender);
        }
        else
        {
            am.cancel(sender);
        }
}

你的想法是对的,但是顺序错了。您需要这样做:

boolean alarmUp = (PendingIntent.getActivity(getApplicationContext(), 0, intent, PendingIntent.FLAG_NO_CREATE) != null);

在你这样做之前:

PendingIntent sender = PendingIntent.getActivity(getApplicationContext(), 0, intent, 0);

alarmUp 始终为真的原因是您之前刚刚自己创建了 PendingIntent