微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

定位 S+版本 10000 及更高版本要求在创建 PendingIntent 时指定 FLAG_IMMUTABLE 或 FLAG_MUTABLE 之一

如何解决定位 S+版本 10000 及更高版本要求在创建 PendingIntent 时指定 FLAG_IMMUTABLE 或 FLAG_MUTABLE 之一

尝试将我的应用程序更新到 Android S 并遇到标题/错误所说的一些问题。我收到错误

定位 S+(版本 10000 及更高版本)需要满足以下条件之一 创建时指定 FLAG_IMMUTABLE 或 FLAG_MUTABLE 待定意向。 强烈考虑使用 FLAG_IMMUTABLE,仅当某些功能依赖于 PendingIntent 可变时才使用 FLAG_MUTABLE,例如如果 它需要与内嵌回复或气泡一起使用。

我的通知代码中只有 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 及更高版本)要求在创建 PendingIntent 时指定 FLAG_IMMUTABLE 或 FLAG_MUTABLE 之一。 强烈考虑使用 FLAG_IMMUTABLE,仅当某些功能依赖于 PendingIntent 可变时才使用 FLAG_MUTABLE,例如如果需要与内联回复或气泡一起使用。 在 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) 在 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) 在 di.internal.module.ApplicationModule_ProvidesGoogleAnalyticslogger$app_developmentDebugFactory.providesGoogleAnalyticslogger$app_developmentDebug(ApplicationModule_ProvidesGoogleAnalyticslogger$app_developmentDebugFactory.java:47) 在 di.internal.module.ApplicationModule_ProvidesGoogleAnalyticslogger$app_developmentDebugFactory.get(ApplicationModule_ProvidesGoogleAnalyticslogger$app_developmentDebugFactory.java:36) 在 di.internal.module.ApplicationModule_ProvidesGoogleAnalyticslogger$app_developmentDebugFactory.get(ApplicationModule_ProvidesGoogleAnalyticslogger$app_developmentDebugFactory.java:11) 在 dagger.internal.DoubleCheck.get(DoubleCheck.java:47) 在 di.internal.module.ApplicationModule_ProvidesMultiAnalyticslogger$app_developmentDebugFactory.get(ApplicationModule_ProvidesMultiAnalyticslogger$app_developmentDebugFactory.java:35) 在 di.internal.module.ApplicationModule_ProvidesMultiAnalyticslogger$app_developmentDebugFactory.get(ApplicationModule_ProvidesMultiAnalyticslogger$app_developmentDebugFactory.java:10) 在 dagger.internal.DoubleCheck.get(DoubleCheck.java:47) 在 di.internal.component.DaggerIProdApplicationComponent.injectChApplication(DaggerIProdApplicationComponent.java:941) 2021-07-02 11:18:17.611 22561-22561/com.chrobinson.navispherecarrier.dev E/AndroidRuntime:在 di.internal.component.DaggerIProdApplicationComponent.inject(DaggerIProdApplicationComponent.java:876) 在 com.chrobinson.navispherecarrier.ChApplication.onCreate(ChApplication.kt:90) 在 android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1211) 在 android.app.ActivityThread.handleBindApplication(ActivityThread.java:6682)

解决方法

因此,为了通过 Android S 更新解决这个问题,我花了一些时间完全删除了 Google Analytics,并用 Firebase Analytics 和 Crashlytics 替换了它。

我不确定这是不是因为 Google 没有/不会更新 Google Analytics for Android S 或什么。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。