Таргетинг на S+ (версия 10000 и выше) требует, чтобы при создании PendingIntent был указан один из FLAG_IMMUTABLE или FLAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Таргетинг на S+ (версия 10000 и выше) требует, чтобы при создании PendingIntent был указан один из FLAG_IMMUTABLE или FL

Сообщение Anonymous »

Пытаюсь обновить свое приложение до Android S и сталкиваюсь с некоторыми проблемами, указанными в заголовке/ошибке. Я получаю сообщение об ошибке.

Для таргетинга на S+ (версия 10000 и выше) требуется, чтобы при создании
был указан один из
FLAG_IMMUTABLE или FLAG_MUTABLE. PendingIntent.
Настоятельно рассмотрите возможность использования FLAG_IMMUTABLE, используйте FLAG_MUTABLE только в том случае, если какая-то функциональность зависит от изменяемости PendingIntent, например если
его необходимо использовать со встроенными ответами или всплывающими сообщениями.

У меня есть только 1 PendingIntent в моем коде для уведомлений, и я добавил флаг

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

PendingIntent.getActivity(
mContext,
0 /* Request code */,
intentOptional.get(),
PendingIntent.FLAG_IMMUTABLE
)
Читая документацию Google, это должно быть все, что мне нужно для этого обновления безопасности в Android S. Я нашел здесь сообщение двухмесячной давности, в котором спрашивалось что-то подобное, и кто-то сказал добавить WorkManager https. ://stackoverflow.com/a/67181567/4219444 в проект, даже если вы его не используете. Поэтому я добавил

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

def work_version = "2.7.0-alpha04"
implementation "androidx.work:work-runtime-ktx:$work_version"
Это совсем не помогло, поскольку я все еще получаю сообщение об ошибке. Кто-нибудь знает, является ли это распространенной проблемой при обновлении Android S или он также проверяет библиотеки? Застряло, поскольку приложение постоянно вылетает, и я не знаю, что делать.
Я создал приложение без одной из моих библиотек, использовал тот же PendingIntent и смог запустить базовое приложение hello world. с ожидаемым намерением. Полная ошибка, которую я получаю от проекта, который пытаюсь скомпилировать:

Для ориентации на S+ (версия 10000 и выше) требуется один из FLAG_IMMUTABLE или FLAG_MUTABLE. указываться при создании PendingIntent.
Настоятельно рассмотрите возможность использования FLAG_IMMUTABLE, используйте FLAG_MUTABLE только в том случае, если какая-либо функциональность зависит от PendingIntent является изменяемым, например. если его необходимо использовать со встроенными ответами или пузырьками.
в android.app.PendingIntent.checkFlags(PendingIntent.java:375)
в android.app.PendingIntent.getBroadcastAsUser(PendingIntent.java:645)
в android.app.PendingIntent.getBroadcast(PendingIntent.java:632)
на com.google.android.gms.internal.gtm.zzbv.zzfe (неизвестный источник:52)
на com.google.android .gms.internal.gtm.zzbv.cancel(Неизвестный источник:54)
at com.google.android.gms.internal.gtm.zzbv.zzaw(Неизвестный источник:4)
на com.google.android.gms.internal.gtm.zzan.zzag(Неизвестный источник:7)
на com.google.android.gms.internal.gtm.zzap.(Неизвестный источник:67)
на com.google.android.gms.internal.gtm.zzap.zzc(Неизвестный источник:82)
на com.google.android.gms.analytics.GoogleAnalytics.getInstance(Неизвестный источник:15)
на di.internal.module.ApplicationModule.providesGoogleAnalyticsLogger$app_developmentDebug(ApplicationModule.kt:339)
at di.internal.module.ApplicationModule_ProvidesGoogleAnalyticsLogger$app_developmentDebugFactory.providesGoogleAnalyticsLogger$app_developmentDebug(ApplicationModule_ProvidesGoogleAnalyticsLogger$app_developmentDebugFactory.java:47)
at di.internal.module.ApplicationModule_ProvidesGoogleAnalyticsLogger$app_developmentDebugFactory.get(ApplicationModule_ProvidesGoogleAnalyticsLogger$app_developmentDebugFactory.java:36)
at di.internal.module.ApplicationModule_ProvidesGoogleAnalyticsLogger$app_developmentDebugFactory.get(ApplicationModule_ProvidesGoogleAnalyticsLogger$app_developmentDebugFactory.java:11)
at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
at di.internal.module.ApplicationModule_ProvidesMultiAnalyticsLogger$app_developmentDebugFactory.get(ApplicationModule_ProvidesMultiAnalyticsLogger$app_developmentDebugFactory.java:35)
at di.internal.module.ApplicationModule_ProvidesMultiAnalyticsLogger$app_developmentDebugFactory.get(ApplicationModule_ProvidesMultiAnalyticsLogger$app_developmentDebugFactory.java:10)
at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
at di.internal.comComponent.DaggerIProdApplicationComponent.injectChApplication(DaggerIProdApplicationComponent.java:941)
2021-07-02 11:18:17.611 22561-22561/com.chrobinson.navispherecarrier.dev E/AndroidRuntime: at di.internal.comComponent.DaggerIProdApplicationComponent.inject(DaggerIProdApplicationComponent.java:876)
в com.chrobinson.navispherecarrier.ChApplication.onCreate(ChApplication.kt:90)
в android.app.Instrumentation.callApplicationOnCreate( Instrumentation.java:1211)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6682)


Подробнее здесь: https://stackoverflow.com/questions/682 ... able-or-fl
Ответить

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

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

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

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

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