检测现有警报
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
!
我用这个函数来创建闹钟,如果已经创建了闹钟,它会取消闹钟,如果没有,创建闹钟
但它不起作用,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
!