我正在检查AlarmManager中是否已经使用
this answer设置了闹钟.
以下是我的代码段.
boolean alarmUp = (PendingIntent.getBroadcast(MainActivity.this,new Intent(MainActivity.this,AlarmReceiver.class),PendingIntent.FLAG_NO_CREATE) != null); if (alarmUp) { // alarm is set; do some stuff } Intent alarmIntent = new Intent(MainActivity.this,AlarmReceiver.class); final PendingIntent pendingIntent = PendingIntent.getBroadcast(MainActivity.this,alarmIntent,PendingIntent.FLAG_UPDATE_CURRENT); AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); manager.setInexactRepeating(AlarmManager.RTC_WAKEUP,System.currentTimeMillis(),10 * 1000,pendingIntent);
但是,alarmUp始终被设置为true.也就是说,无论我是否设置闹钟,每当我重新启动我的应用程序,它告诉我,alarmUp是真的(我正在通过制作一个吐司)来检查.
请帮忙我出错了.
解决方法
为了使此检查正常工作,您需要确保PendingIntent仅在报警设置时才存在.你可以做两件事来确保是这样的:
1)测试代码时,请确保卸载应用程序,然后在测试之前重新安装应用程序.卸载您的应用程序将删除您的应用程序可能已创建的待处理的任何PendingIntent.
2)取消闹铃时,请确认您也取消了PendingIntent.你可以这样做
Intent alarmIntent = new Intent(MainActivity.this,AlarmReceiver.class); final PendingIntent pendingIntent = PendingIntent.getBroadcast(MainActivity.this,PendingIntent.FLAG_NO_CREATE); if (pendingIntent != null) { pendingIntent.cancel(); }