Android AlarmManager-如何知道是否安排了某些内容

Android AlarmManager-如何知道是否安排了某些内容,android,widget,alarmmanager,Android,Widget,Alarmmanager,我正在构建一个应用程序,它使用AlarmManager根据用户请求,计划在以后关闭wifi和bt 这很有效。我的下一步是允许用户取消 PendingIntent alarmIntent = PendingIntent.getBroadcast(this, 0, intent, 0); 当然,活动可能会被杀死。想象一下这样的情景: 用户在30分钟后设置警报 用户将手机置于睡眠状态,活动被终止 用户拿起手机,再次打开应用程序以取消请求 在新创建的活动中,我如何知道我安排了什么 另外,我想为这个应用

我正在构建一个应用程序,它使用
AlarmManager
根据用户请求,计划在以后关闭wifi和bt

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

PendingIntent alarmIntent = PendingIntent.getBroadcast(this, 0, intent, 0);
当然,活动可能会被杀死。想象一下这样的情景:

  • 用户在30分钟后设置警报
  • 用户将手机置于睡眠状态,活动被终止
  • 用户拿起手机,再次打开应用程序以取消请求
  • 在新创建的活动中,我如何知道我安排了什么

    另外,我想为这个应用程序制作一个小部件,那么如何将信息从活动传递到小部件(以及可能传递到其他元素)

    这是我设置警报的方式:

    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);
    }
    

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

    获取与要取消的报警关联的挂起意图

    PendingIntent alarmIntent = PendingIntent.getBroadcast(this, 0, intent, 0);
    
    那就取消吧

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