当前位置: 首页 > 知识库问答 >
问题:

以S为目标(版本10000及以上)需要在创建PendingIntent时指定FLAG_IMMUTABLE或FLAG_MUTABLE之一

彭海阳
2023-03-14

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

目标 S(版本 10000 及更高版本)要求在创建“挂起提示”时指定FLAG_IMMUTABLE或FLAG_MUTABLE之一。强烈建议使用FLAG_IMMUTABLE,仅当某些功能依赖于 PendingIntent 是可变的(例如,如果需要将其与内联回复或气泡一起使用)时才使用FLAG_MUTABLE。

我的代码中只有1个用于通知的PendingIntent,我添加了Flag

PendingIntent.getActivity(
      mContext,
      0 /* Request code */,
      intentOptional.get(),
      PendingIntent.FLAG_IMMUTABLE
    )

阅读谷歌的文档,这应该是我在Android s中进行安全更新所需的全部内容。我在这里找到了几个月前的一篇帖子,问了类似的问题,有人说要添加WorkManagerhttps://stackoverflow.com/a/67181567/4219444即使您不使用它,也可以将其添加到项目中。所以我补充道

def work_version = "2.7.0-alpha04" 
implementation "androidx.work:work-runtime-ktx:$work_version"

这一点用都没有,因为我仍然收到错误。有人知道这是Android S升级的常见问题吗?还是它也会检查库?因为应用程序一直崩溃,不知道该怎么办。

我已经创建了一个没有我的库的应用程序,并且使用了相同的pending intent,并且能够运行一个带有pending意图的基本hello world应用程序。我从试图编译的项目中收到的全部错误是:

目标S(版本10000及以上)要求在创建PendingIntent时指定FLAG_IMMUTABLE或FLAG_MUTABLE之一。强烈建议使用FLAG_IMMUTABLE,仅当某些功能依赖于可变的PendingIntent时才使用FLAG_MUTABLE,例如,如果需要与内联回复或气泡一起使用。在Android . app . pending intent . check flags(pending intent . Java:375)在Android . app . pending intent . getbroadcastasuser(pending intent . Java:645)在Android . app . pending intent . get broadcast(pending intent . Java:632)在com . Google . Android . GMS . internal . GTM . zzbv . zzfe(未知来源:52)在com . Google . Android . GMS . internal . GTM . zzbv . cancel(未知来源:54)

共有3个答案

方子安
2023-03-14

添加您的待定意图,如下所示:

 PendingIntent.getActivity(getApplicationContext(), 0, intent,PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_UPDATE_CURRENT)
阚亮
2023-03-14

根据文档,“强烈建议在创建挂起提示时使用FLAG_IMMUTABLE。仅当某些功能依赖于修改基本意图时,才应使用FLAG_MUTABLE,例如,任何需要与内联回复或气泡一起使用的 PendingIntent。

所以用这个PendingIntent.FLAG_IMMUTABLE或PendingIntent.FLAG_UPDATE_CURRENT

而不仅仅是PendingIntent.FLAG_UPDATE_CURRENT

例如< code > PendingIntent . get activity(context,yourRequestID,yourIntent,pending intent。FLAG_IMMUTABLE或PendingIntent。FLAG _更新_当前)

因为"即使设置了FLAG_IMMUTABLEFLAG_UPDATE_CURRENT仍然有效"

如果错误仍然存在,并且您的targetSdkVersion=31,则一定是因为您的一个依赖项在内部使用WorkManager,或者您的依赖项直接使用旧版本的WorkManager而导致错误。

要解决,只需添加此依赖项

implementation 'androidx.work:work-runtime-ktx:2.7.0'
林威
2023-03-14

它通过添加来解决

implementation 'androidx.work:work-runtime:2.7.0-alpha05'

在我的等级中。(您可以添加此库的最新版本)

似乎是工作管理器中的一个错误。检查版本2.7.0-alpha02中的错误修复

https://developer . Android . com/jetpack/Android x/releases/work # 2 . 7 . 0-alpha 02

 类似资料: