Catima应用Android电源菜单Device Controls跳转Intent携带相同ID问题
问题根因
你的代码问题出在PendingIntent的创建逻辑上:
Android系统判定两个PendingIntent是否可复用的核心依据是requestCode、Intent的action/data/category/component/type这几个字段,只有以上字段存在差异时,系统才会视为两个独立的PendingIntent。
你在调用PendingIntent.getActivity()时,所有请求的第二个参数requestCode都统一传了固定值0,同时用了PendingIntent.FLAG_IMMUTABLE标记禁止修改PendingIntent内容,系统会认为后续创建的所有PendingIntent都是对第一个的复用,即使你在Intent的Extra中传入了不同的卡片ID,也会被系统直接忽略,最终触发跳转时永远使用最早创建的PendingIntent携带的Extra值,就出现了所有控件跳转都打开同一张会员卡的现象。
修复方案
只需要将PendingIntent.getActivity()的requestCode参数替换为和当前会员卡唯一绑定的数值即可,直接使用会员卡的整型IDcard.id就可以,保证每个PendingIntent的requestCode唯一,系统就不会错误复用。
修改后的代码如下:
// 仅修改requestCode参数为card.id即可 PendingIntent pendingIntent = PendingIntent.getActivity(getBaseContext(), card.id, openIntent, PendingIntent.FLAG_IMMUTABLE);
内容的提问来源于stack exchange,提问作者usr-local-ΕΨΗΕΛΩΝ
相关产品推荐
相关产品推荐

