当你启动这个Activity并附带一个Intent时,你可以这样来发送一个包含FLAG_IMMUTABLE的Intent: Intentintent=newIntent(this,YourActivity.class);intent.putExtra("message","Hello from another Activity!");intent.addFlags(Intent.FLAG_ACTIVITY
由于PendingIntent可以被多个组件共享和触发,如果PendingIntent是可变的,那么恶意应用可能会通过修改其内部Intent来执行未授权的操作。因此,Android要求开发者在创建PendingIntent时明确指定其可变性,使用FLAG_IMMUTABLE或FLAG_MUTABLE。 FLAG_IMMUTABLE标志确保了PendingIntent的不可变性,从而防止了潜在的安全风险。当PendingIntent被...
针对S+(版本 10000 及更高版本)要求在创建 PendingIntent 时指定 FLAG_IMMUTABLE 或 FLAG_MUTABLE 之一。强烈考虑使用 FLAG_IMMUTABLE,仅当某些功能依赖于可变的 PendingIntent 时才使用 FLAG_MUTABLE,例如,如果它需要与内联回复或气泡一起使用。在 android.app.PendingIntent.checkFlags(PendingIntent.java:375) 在 andro...
PendingIntent 的应用场景关键在于间接的 Intent 跳转需求, 即先通过一级 Intent 跳转到某个组件,在该...
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. 代码语言:javascript 代码运行次数:0 运行 AI代码解释 mFlag = if (Build.VERSION.SDK_INT >= Build....
frameworks\base\core\java\android\app\ PendingIntent.java
针对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 ...
FLAG_IMMUTABLE: 不可变标记位,将约束外部应用消费 PendingIntent 修改其中的 Intent; FLAG_MUTABLE: 可变标记位,不约束外部应用消费 PendingIntent 修改其中的 Intent; FLAG_UPDATE_CURRENT: 更新标记位 1,如果系统中已经存在相同的 PendingIntent,那么将保留原有 PendingIntent 对象,而更新其中的 Intent。即使不可变 Pendi...
这可以通过在之前的 flags 基础上增加FLAG_MUTABLE和FLAG_IMMUTABLE两个属性来完成。比如,之前我的 flags 是,PendingIntent.FLAG_CANCEL_CURRENT,当我想将其修改为不可变的时候,就可以使用如下方式进行修改: val flags = PendingIntent.FLAG_CANCEL_CURRENTorPendingIntent.FLAG_IMMUTABLE ...
FLAG_UPDATE_CURRENT表示当pengdingIntent存在时,将会保留它只是将他的intent中的参数替换。FLAG_IMMUTABLE表示这是一个不可变的PendingItent。当然第四个参数flag也可以自定义。 这下就很容易理解,为什么我每次收到的都是第一条短信的送达报告了。在我的代码中,PendingIntent.getBroadcast(Context context, int ...