自动将requestCodes分配给PendingIntent.getBroadcast(使用AlarmManager)

时间:2016-08-07 18:05:27

标签: android android-intent scheduled-tasks alarmmanager android-pendingintent

我实际上是在我的Android应用程序中为另一个应用程序提供了一个接口。客户端请求了一个系统,在该系统中,他可以安排在特定时间显示新的本地通知,还可以取消所有本地预定通知。有没有一种方法可以自动将(几乎无限制的)requestCodes(/ ids)分配给PendingIntent对象,同时将它们与AlarmManager一起使用?

PendingIntent pendingIntent = PendingIntent.getBroadcast(this, requestCode, someNotificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
...
AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
    alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, futureTimeInMillis, pendingIntent);

我还希望能够在不跟踪requestCodes的情况下取消所有这些待处理的意图:

for(int requestCode : somehowGetAllUsedRequestCodes){
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(this, requestCode, someNotificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
    pendingIntent.cancel();
    alarmManager.cancel(pendingIntent);
}

如果不手动跟踪请求代码,是否可以实现这一点?

1 个答案:

答案 0 :(得分:0)

您需要跟踪数据库中的请求代码或以后可以取消它们的任何代码。如果将值存储在数据库中,则可以确保id是唯一的。