由于PendingIntent可以被多个组件共享和触发,如果PendingIntent是可变的,那么恶意应用可能会通过修改其内部Intent来执行未授权的操作。因此,Android要求开发者在创建PendingIntent时明确指定其可变性,使用FLAG_IMMUTABLE或FLAG_MUTABLE。 FLAG_IMMUTABLE标志确保了PendingIntent的不可变性,从而防止了潜在的安全风险。当PendingIntent被...
Flag indicating that the created PendingIntent should be mutable. This flag cannot be combined with#FLAG_IMMUTABLE. Up untilandroid.os.Build.VERSION_CODES#R, PendingIntents are assumed to be mutable by default, unless#FLAG_IMMUTABLEis set. Starting withandroid.os.Build.VERSION_CODES#S, it will ...
FLAG_MUTABLE: 表示由 PendingIntent.send() 传入的 intent 内容可以被应用合并到 PendingIntent 中的 Intent。 ⚠️ 对于任何可变类型的 PendingIntent,始终设置其中所封装的Intent的ComponentName。如果未采取该操作的话可能会造成安全隐患。 该标记是在Android 12版本中加入。Android 12 之前的版本中,任何未指定 FLAG...
PendingIntent可变性是一种对外部应用消费行为的约束机制,通过标记位FLAG_MUTABLE和FLAG_IMMUTABLE控制PendingIntent可变或不可变。例如: 示例程序 // 创建可变 PendingIntent val pendingIntent = PendingIntent.getActivity(applicationContext, NOTIFICATION_REQUEST_CODE, intent, PendingIntent.FLAG_MUTABLE) // 创建不可变 Pend...
FLAG_MUTABLE:可变标记位,不约束外部应用消费 PendingIntent 修改其中的 Intent; FLAG_UPDATE_CURRENT:如果系统中已经存在相同的 PendingIntent,那么将保留原有 PendingIntent 对象,而更新其中的 Intent。即使不可变 PendingIntent,依然可以在当前应用更新; FLAG_CANCEL_CURRENT:如果系统中已经存在相同的 PendingIntent,那么将先...
强烈建议在创建PendingIntent时使用FLAG_IMMUTABLE。FLAG_MUTABLE仅应在某些功能依赖于修改底层意图时使用,...
强烈建议在创建PendingIntent时使用FLAG_IMMUTABLE。FLAG_MUTABLE仅应在某些功能依赖于修改底层意图时使用,...
FLAG_UPDATE_CURRENT) 注意事项 2 - 显式指定可变性: FLAG_MUTABLE 可变标记位是 Android 12 新增的,在 Android 12 之前,未使用 FLAG_IMMUTABLE 不可变标记位的 PendingIntent 都默认是可变的。但是,从 Android 12 开始,为了使 PendingIntent 的处理更加安全,系统要求 PendingIntent 必须显式声明一个可变性标志。
PendingIntent 的应用场景关键在于间接的 Intent 跳转需求, 即先通过一级 Intent 跳转到某个组件,在该...
PendingIntent 可变性是一种对外部应用消费行为的约束机制,通过标记位FLAG_MUTABLE和FLAG_IMMUTABLE控制 PendingIntent 可变或不可变。例如: 示例程序 // 创建可变 PendingIntentval pendingIntent=PendingIntent.getActivity(applicationContext,NOTIFICATION_REQUEST_CODE,intent,PendingIntent.FLAG_MUTABLE)// 创建不可变 PendingInten...