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

How to create unique pendingIntents without requestCode

如何使用相同的 requestCode 创建唯一的待定意向,然后取消它们?例如,我想用 UUID 将它们分开。 Documentation 说通过添加额外的内容并不能使它们独一无二,也许我可以使用生成的字符串 UUID 设置数据?

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

 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)

这个问题可能与 重复。

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

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

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

但是您也可以使用不同的数据(就像您在原始代码中使用的那样)。这也行。

注意:但是,您正在尝试解析无效的 URI。你应该尝试这样的事情:

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