我使用这个函数来创建闹钟,如果已经创建了闹钟,则会取消闹钟,如果没有,则创建闹钟
但这不行,alarmUp永远不会假
如何检查报警是否存在?
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
始终为 true 的原因是因为您之前刚刚自己创建了 PendingIntent
!
关于android - 检测现有警报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32994252/