android – 无法检查AlarmManager是否设置了闹钟

前端之家收集整理的这篇文章主要介绍了android – 无法检查AlarmManager是否设置了闹钟前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在检查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();
}
原文链接:https://www.f2er.com/android/312254.html

猜你在找的Android相关文章