【发布时间】:2012-03-09 15:16:15
【问题描述】:
我正在安排多个意图发送到广播接收器。 每个意图之间的区别在于它被接收的时间和它包含的额外数据。
现在我需要允许用户取消特定警报。根据 AlarmManager.cancel() javadoc,它使用 filterEquals 方法比较意图:
http://developer.android.com/reference/android/content/Intent.html#filterEquals(android.content.Intent)
现在的问题是,根据 filterEquals,我所有的意图都是一样的。针对“动作、数据、类型、类和类别”的方法检查。
独特的数据要么在意图额外的捆绑包中,要么在 AlarmManager 中作为时间。 我尝试更改这些参数中的任何一个 - 例如使用:
intent.setData(Uri.withAppendedPath(Uri.EMPTY, "some_unique_data"));
根据 filterEquals 方法,这将使每个意图都是唯一的,但是在将 Data 更改为这样的东西之后,我的意图不再到达 BroadcastReceiver。
我可以更改哪些特定的数据位,以根据 filterEquals 使每个意图都是唯一的,并且仍然可以接收到我的简单 BroadcastReceiver?
也许我可以以任何方式修改我的接收器?
【问题讨论】:
-
PendingIntent.getBroadcast 方法中有一个名为 requestCode 的参数,但正如其文档所述:“requestCode Private request code for the sender (currently not used).”。这是否意味着此代码不会以任何方式使用,或者我可以将其指定为唯一 ID 以取消待处理的意图?
-
您能否接受您的回答。这将从开放问题列表中删除此问题,并可能帮助其他有类似问题的人。谢谢。
标签: android android-intent alarmmanager android-pendingintent