Android 12 个未决意向
Android 12 Pending Intent
针对 S+(版本 31 及更高版本)要求在创建 PendingIntent 时指定 FLAG_IMMUTABLE 或 FLAG_MUTABLE 之一。强烈考虑使用 FLAG_IMMUTABLE,仅当某些功能依赖于 PendingIntent 可变时才使用 FLAG_MUTABLE
我无法更新 android studio 项目编码中的待定意图标志
这是AlarmPingSender.java中发生错误的地方
public void start()
{
String action = MqttServiceConstants.PING_SENDER
+ comms.getClient().getClientId();
Log.d(TAG, "Register alarmreceiver to MqttService"+ action);
service.registerReceiver(alarmReceiver, new IntentFilter(action));
pendingIntent = PendingIntent.getBroadcast(service, 0, new Intent(
action), PendingIntent.FLAG_UPDATE_CURRENT);
schedule(comms.getKeepAlive());
hasStarted = true;
}
帮我解决问题 ERROR IN ANDROID STUDIO IMAGE
您需要这样做:
pendingIntent = PendingIntent.getBroadcast(service, 0, new Intent(
action), PendingIntent.FLAG_UPDATE_CURRENT |
PendingIntent.FLAG_IMMUTABLE);
由于您正在使用 AlarmManager
,因此您应该能够使用 IMMUTABLE
标志。
当您想在项目中创建任何 PendingIntent
时,请使用这两个 public 方法
创建activity pendingIntent
public static PendingIntent createPendingIntentGetActivity(Context context, int id, Intent intent, int flag) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
return PendingIntent.getActivity(context, id, intent, PendingIntent.FLAG_IMMUTABLE | flag);
} else {
return PendingIntent.getActivity(context, id, intent, flag);
}
}
创建广播 pendingIntent
public static PendingIntent createPendingIntentGetBroadCast(Context context, int id, Intent intent, int flag) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
return PendingIntent.getBroadcast(context, id, intent, PendingIntent.FLAG_IMMUTABLE | flag);
} else {
return PendingIntent.getBroadcast(context, id, intent, flag);
}
}
针对 S+(版本 31 及更高版本)要求在创建 PendingIntent 时指定 FLAG_IMMUTABLE 或 FLAG_MUTABLE 之一。强烈考虑使用 FLAG_IMMUTABLE,仅当某些功能依赖于 PendingIntent 可变时才使用 FLAG_MUTABLE
我无法更新 android studio 项目编码中的待定意图标志
这是AlarmPingSender.java中发生错误的地方
public void start()
{
String action = MqttServiceConstants.PING_SENDER
+ comms.getClient().getClientId();
Log.d(TAG, "Register alarmreceiver to MqttService"+ action);
service.registerReceiver(alarmReceiver, new IntentFilter(action));
pendingIntent = PendingIntent.getBroadcast(service, 0, new Intent(
action), PendingIntent.FLAG_UPDATE_CURRENT);
schedule(comms.getKeepAlive());
hasStarted = true;
}
帮我解决问题 ERROR IN ANDROID STUDIO IMAGE
您需要这样做:
pendingIntent = PendingIntent.getBroadcast(service, 0, new Intent(
action), PendingIntent.FLAG_UPDATE_CURRENT |
PendingIntent.FLAG_IMMUTABLE);
由于您正在使用 AlarmManager
,因此您应该能够使用 IMMUTABLE
标志。
当您想在项目中创建任何 PendingIntent
时,请使用这两个 public 方法
创建activity pendingIntent
public static PendingIntent createPendingIntentGetActivity(Context context, int id, Intent intent, int flag) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
return PendingIntent.getActivity(context, id, intent, PendingIntent.FLAG_IMMUTABLE | flag);
} else {
return PendingIntent.getActivity(context, id, intent, flag);
}
}
创建广播 pendingIntent
public static PendingIntent createPendingIntentGetBroadCast(Context context, int id, Intent intent, int flag) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
return PendingIntent.getBroadcast(context, id, intent, PendingIntent.FLAG_IMMUTABLE | flag);
} else {
return PendingIntent.getBroadcast(context, id, intent, flag);
}
}