如何在没有 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 来区分 PendingIntent
s。例如,您可以将 GUID 设置为 ACTION,这足以使 PendingIntent
唯一。
但是您也可以使用不同的数据(就像您在原始代码中使用的那样)。这也行。
注意:但是,您正在尝试解析无效的 URI。你应该尝试这样的事情:
val uniqueId = Uri.parse("scheme:///dedf788c-ecd7-43f4-a691-03e2117fd50e")
如何使用相同的 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 来区分 PendingIntent
s。例如,您可以将 GUID 设置为 ACTION,这足以使 PendingIntent
唯一。
但是您也可以使用不同的数据(就像您在原始代码中使用的那样)。这也行。
注意:但是,您正在尝试解析无效的 URI。你应该尝试这样的事情:
val uniqueId = Uri.parse("scheme:///dedf788c-ecd7-43f4-a691-03e2117fd50e")