AlarmManager - 如何知道是否安排了某些事情

时间:2016-04-14 18:30:50

标签: android widget alarmmanager

我正在构建一个应用程序,使用AlarmManager根据用户请求安排wifi,并在以后关闭bt。

有效。我的下一步是允许用户取消。

当然,活动可能会被杀死。想象一下那个场景:

  1. 用户在30分钟后设置闹钟
  2. 用户将手机置于睡眠状态,活动被杀死
  3. 用户拿起电话并再次打开应用以取消请求。
  4. 在新创建的活动中,我怎么知道我安排了什么?

    另外,我想为这个应用程序制作一个小部件,那么如何将活动中的信息传递给小部件(可能还有其他元素)?

    这是我设置闹钟的方法:

    int type = AlarmManager.ELAPSED_REALTIME_WAKEUP; // wake up CPU after said time
    long delay = SystemClock.elapsedRealtime() + minutes * 60 * 1000;
    PendingIntent alarmIntent = PendingIntent.getBroadcast(this, 0, intent, 0);
    
    AlarmManager manager = (AlarmManager) getSystemService(ALARM_SERVICE);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        // Need to use this method, otherwise Doze is killing us
        manager.setExactAndAllowWhileIdle(type, delay, alarmIntent);
    }
    else {
        manager.setExact(type, delay, alarmIntent);
    }
    

1 个答案:

答案 0 :(得分:0)

你可以取消这样的任何警报 -

获取与您要取消的警报关联的待处理意图。

PendingIntent alarmIntent = PendingIntent.getBroadcast(this, 0, intent, 0);

然后取消它。

AlarmManager manager = (AlarmManager) getSystemService(ALARM_SERVICE);
manager.cancel(alarmIntent);