Инициализация владельца устройства Android 12 с помощью QR-кода
У меня есть приложение, которое можно успешно настроить в качестве владельца устройства на устройствах до Android 12 с помощью QR-кода, и теперь я добавляю два действия, подобные этой ссылке для Android 12: Подготовка владельца устройства Android 12 . и настройка владельца устройства завершена, но когда я хочу запустить свое приложение, у меня возникает эта ошибка: (и у меня нет ожидающих намерений)
java.lang.IllegalArgumentException: io.phoenixdev.afw.emm: Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a 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.```
1 ответ
это потому, что один или несколько ваших PendingIntent создаются без флага Mutability. Можете ли вы проверить, передаете ли вы флаг изменчивости (FLAG_MUTABLE или FLAG_IMMUTABLE)? Если вы не изменяете ожидающее намерение после его создания, я бы рекомендовал добавить FLAG_IMMUTABLE.
Вот метод, который я использую для получения флагов для ожидаемого намерения, чтобы вам не приходилось везде выполнять проверки Android 12.
public static int getPendingIntentFlag(boolean mutable) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
return mutable ? PendingIntent.FLAG_MUTABLE :
PendingIntent.FLAG_IMMUTABLE;
}
return 0;
}
Просто вызовите getPendingIntentFlag(false) для неизменяемых намерений, подобных этому
val pendingIntent = PendingIntent.getBroadcast(
context, 0, intent,
PendingIntent.FLAG_UPDATE_CURRENT or
Utils.getPendingIntentFlag(false)
)
Таким образом, либо андроид 12, либо нет, вам не нужно беспокоиться об этом флаге.