如何在没有requestCode的情况下创建唯一的endingIntents

时间:2018-09-21 08:33:53

标签: android android-pendingintent

如何使用相同的requestCode创建唯一的待处理意图,然后将其取消?我想用例如UUID将它们分开。 Documentation说,通过添加额外内容并不能使它们唯一,也许我可以使用生成的字符串UUID setData吗?

这是我想出的唯一选择,但不确定是否可行:

 val intent = Intent(context, cls)
 val uniqueId = Uri.parse("dedf788c-ecd7-43f4-a691-03e2117fd50e")
 intent.data = uniqueId

 val pendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT)

2 个答案:

答案 0 :(得分:0)

此问题可能是this的重复项。

您的requestCode必须是唯一的,否则,如果您使用相同的requestCode(旧Api <22),则PendingIntent将更新为最后一个意图。

如果您不使用操作,则可以将UUID添加为虚拟操作以使其唯一。 您必须存储requestCode才能取消旧的PendingIntent。

答案 1 :(得分:0)

您不需要其他requestCode。您可以使用ACTION或DATA来区分PendingIntent。例如,您可以将GUID设置为ACTION,这足以使PendingIntent唯一。

但是您也可以使用其他数据(如原始代码中一样)。那也行。

注意:但是,您正在尝试解析无效的URI。您应该尝试以下操作:

val uniqueId = Uri.parse("scheme:///dedf788c-ecd7-43f4-a691-03e2117fd50e")