如何使用相同的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)
答案 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")