如何检查 AlarmManager 是否已经设置了闹钟?

2024-03-24

当我的应用程序启动时,我希望它检查特定警报(通过 AlarmManager 注册)是否已设置并正在运行。谷歌的结果似乎表明没有办法做到这一点。这仍然正确吗?我需要执行此检查,以便在采取任何操作创建新警报之前向用户提供建议。


跟进 ron 发表的评论,这里是详细的解决方案。假设您已经注册了一个带有待处理意图的重复警报,如下所示:

Intent intent = new Intent("com.my.package.MY_UNIQUE_ACTION");
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, 
                                      intent, PendingIntent.FLAG_UPDATE_CURRENT);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.MINUTE, 1);

AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 1000 * 60, pendingIntent);

检查它是否处于活动状态的方法是:

boolean alarmUp = (PendingIntent.getBroadcast(context, 0, 
        new Intent("com.my.package.MY_UNIQUE_ACTION"), 
        PendingIntent.FLAG_NO_CREATE) != null);

if (alarmUp)
{
    Log.d("myTag", "Alarm is already active");
}

这里的关键是FLAG_NO_CREATE正如 javadoc 中所述:if the described PendingIntent **does not** already exists, then simply return null(而不是创建一个新的)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何检查 AlarmManager 是否已经设置了闹钟? 的相关文章

随机推荐