android - 检测现有警报

标签 android android-intent alarmmanager android-pendingintent

我使用这个函数来创建闹钟,如果已经创建了闹钟,则会取消闹钟,如果没有,则创建闹钟

但这不行,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/

相关文章:

android - 在一个应用程序中使用 2 个 map fragment 时出现问题

android - 如何删除导航 View 不必要的顶部填充?

android - 自动打开 Android 文件的 Intent Chooser

android - 检测默认闹钟应用程序警报

android - 查杀服务查杀重复报警

java - 如何将按钮对齐到选项卡内的中心?

android - 按国家/地区过滤 Google 地方信息自动完成结果

android - 待定 Intent 似乎没有通过附加功能

android - 将数据从 Activity 传递给其他 [不工作]

java - Android 在闹钟管理器中设置特定时间和日期