Линтер AGP 8 просит добавить в pendingIndent флаг, которого еще нет в APIAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Линтер AGP 8 просит добавить в pendingIndent флаг, которого еще нет в API

Сообщение Anonymous »

Недавно я обновил свое приложение для Android:
  • AGP: 7.2.2 -> 8.5.2
  • Target /Компилировать версию SDK: 34 -> 35
  • Gradle: 7.3.3 -> 8.7
До этого моя линтер работал нормально и не показать любые проблемы с кодом. Однако после обновления он начал показывать ошибку:

Код: Выделить всё

: Error: Missing PendingIntent mutability flag [UnspecifiedImmutableFlag]
pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
Я знаю, что API 31 требует предоставления флага изменчивости для всех ожидающих намерений, поэтому это считается ошибкой, но эта строка взята из фрагмента:

Код: Выделить всё

if(Build.VERSION.SDK_INT >= VERSION_CODES.M){
pendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_IMMUTABLE);
} else {
pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
}
Если я прав, FLAG_IMMUTABLE был введен в API 23, поэтому, если я хочу поддерживать также API 21 и 22, мне нужно иметь этот «оператор if». И если он был введен в API 23, почему линтер требует от меня поставить этот флаг в код для старых API?
Я что-то упускаю или это очевидное ложное срабатывание?
На данный момент я скрыл эту ошибку с помощью аннотаций, но чувствую, что это неправильный путь.

Подробнее здесь: https://stackoverflow.com/questions/792 ... in-api-yet
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»