由于PendingIntent可以被多个组件共享和触发,如果PendingIntent是可变的,那么恶意应用可能会通过修改其内部Intent来执行未授权的操作。因此,Android要求开发者在创建PendingIntent时明确指定其可变性,使用FLAG_IMMUTABLE或FLAG_MUTABLE。 FLAG_IMMUTABLE标志确保了PendingIntent的不可变性,从而防止了潜在的安全风险。当PendingIntent被...
您可以使用 FLAG_EXPIRE_IMMEDIATELY 标志将 PendingIntent 设置为立即过期,或者使用 setExpirationTime() 方法设置一个过期时间。 Intent intent = new Intent(context, MyReceiver.class); PendingIntent.getActivity(context, requestCode, intent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE); long ...
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 ...
|= PendingIntent.FLAG_IMMUTABLE; } PendingIntent pendingIntent = PendingIntent.getActivity(context, requestCode, intent, flags); 复制代码 避免使用过时的PendingIntent:过时的PendingIntent可能会导致冲突。确保在创建PendingIntent时使用最新的API和参数。 存储PendingIntent时注意安全性:将PendingIntent存储在安全的地方,例如...
2.7 显式指定 PendingIntent 可变性 为了使 PendingIntent 的处理更加安全,Android 12 要求 PendingIntent 必须显式声明一个可变性标志即FLAG_MUTABLE[13]或FLAG_IMMUTABLE[14]。在此之前,PendingIntent 默认是可变的。 2.8 检测不安全的嵌套 Intent 启动 Android 12 引入了一项StrictMode检查规则,用于检测不安全的嵌套 In...
以Android 12 为目标平台的App,构建PendingIntent时需要指定Flag为FLAG_IMMUTABLE(建议)或FLAG_MUTABLE二者之一,否则App将崩溃并出现以下error。 FLAG_IMMUTABLE,指示创建的 PendingIntent 应该是不可变的标志。 FLAG_MUTABLE,指示创建的 PendingIntent 应该是可变的标志。
PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT )// 该 PendingIntent 已被更新 在接下来的内容中我们会解释为什么将PendingIntent设置为可变类型。 跨应用 API 通常的用法并不局限于与系统交互。虽然在某些操作后使用startActivityForResult()) 和onActivityResult()) 来接收回调是非常常见的用法,但它...
1、context:当前应用的上下文,PendingIntent 将从中抽取授权信息; 2、requestCode:PendingIntent 的请求码,与 Intent 的请求码类似; 3、intent:最终的意图操作; 4、flag:控制标记位,我们暂且放到一边。 创建PendingIntent 时有一个容易犯错的地方需要注意:重复调用 PendingIntent.getActivity() 等创建方法不一定会返回新的...
PendingIntent.java privatefinalIIntentSender mTarget;publicvoidcancel(){ ActivityManager.getService().cancelIntentSender(mTarget); } 2.4 可变性与不可变性 PendingIntent 可变性是一种对外部应用消费行为的约束机制,通过标记位FLAG_MUTABLE和FLAG_IMMUTABLE控制 PendingIntent 可变或不可变。例如: ...
在Android 12 中创建 PendingIntent 的时候,需要显示的声明是否可变,请分别使用PendingIntent.FLAG_MUTABLE或PendingIntent.FLAG_IMMUTABLE标志,如果您的应用试图在不设置任何可变标志的情况下创建 PendingIntent 对象,系统会抛出IllegalArgumentException异常,错误日志如下所示。