当你启动这个Activity并附带一个Intent时,你可以这样来发送一个包含FLAG_IMMUTABLE的Intent: Intentintent=newIntent(this,YourActivity.class);intent.putExtra("message","Hello from another Activity!");intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_IMMUTABLE);startActivity(intent); 1. 2. 3. 4...
由于PendingIntent可以被多个组件共享和触发,如果PendingIntent是可变的,那么恶意应用可能会通过修改其内部Intent来执行未授权的操作。因此,Android要求开发者在创建PendingIntent时明确指定其可变性,使用FLAG_IMMUTABLE或FLAG_MUTABLE。 FLAG_IMMUTABLE标志确保了PendingIntent的不可变性,从而防止了潜在的安全风险。当PendingIntent被...
FLAG_IMMUTABLE only limits the ability to alter the semantics of the intent that is sent by send by the invoker of send. The creator of the PendingIntent can always update the PendingIntent itself via FLAG_UPDATE_CURRENT. 也就是说,FLAG_IMMUTABLE的“不可变”指的是,当PendingIntent设置了 flags ...
以Android 12 为目标平台的App,构建PendingIntent时需要指定Flag为FLAG_IMMUTABLE(建议)或FLAG_MUTABLE二者之一,否则App将崩溃并出现以下error。 FLAG_IMMUTABLE,指示创建的 PendingIntent 应该是不可变的标志。 FLAG_MUTABLE,指示创建的 PendingIntent 应该是可变的标志。 代码语言:javascript 复制 if(Compatibility.isChangeEn...
FLAG_IMMUTABLE: 不可变标记位,将约束外部应用消费 PendingIntent 修改其中的 Intent; FLAG_MUTABLE: 可变标记位,不约束外部应用消费 PendingIntent 修改其中的 Intent; FLAG_UPDATE_CURRENT: 更新标记位 1,如果系统中已经存在相同的 PendingIntent,那么将保留原有 PendingIntent 对象,而更新其中的 Intent。即使不可变 Pendi...
FLAG_MUTABLE:表示PendingIntent中的Intent应允许应用程序通过合并PendingIntent.send()的Intent参数值来更新其内容。 始终填写任何可变的PendingIntent的包装Intent的ComponentName。不这样做可能会导致安全漏洞! 此标志是在Android 12中添加的。在Android 12之前,在没有FLAG_IMMUTABLE标志的情况下创建的任何PendingIntent都是隐式...
FLAG_UPDATE_CURRENT表示当pengdingIntent存在时,将会保留它只是将他的intent中的参数替换。FLAG_IMMUTABLE表示这是一个不可变的PendingItent。当然第四个参数flag也可以自定义。 这下就很容易理解,为什么我每次收到的都是第一条短信的送达报告了。在我的代码中,PendingIntent.getBroadcast(Context context, int ...
PendingIntent.Strongly consider using FLAG_IMMUTABLE, only use FLAG_MUTABLE if \some functionality depends on the PendingIntent being mutable, e.g. if \it needs to be used with inline replies or bubbles. 适配建议:尽可能创建不可变的待处理 intent。
针对S+(版本 31 及更高版本)要求在创建 PendingIntent 时指定 FLAG_IMMUTABLE 或 FLAG_MUTABLE 之一。我在将目标 SDK 更新到 31 后得到它。错误总是在 AlarmPingSender 之后出现。但我不知道任何使用 AlarmPingSender 的类。 2021-10-31 10:43:04.990 17031-17341/com.app.mobile D/AlarmPingSender: Register al...
在Android 12 中创建 PendingIntent 的时候,需要显示的声明是否可变,请分别使用PendingIntent.FLAG_MUTABLE或PendingIntent.FLAG_IMMUTABLE标志,如果您的应用试图在不设置任何可变标志的情况下创建 PendingIntent 对象,系统会抛出IllegalArgumentException异常,错误日志如下所示: ...