使用解析SDK时在Android 13上崩溃:以S+(版本31及更高版本)为目标要求在创建时指定FLAG_IMMUTABLE或FLAG_MUTABLE之一

bnlyeluc  于 2023-02-06  发布在  Android
关注(0)|答案(1)|浏览(316)

我的应用使用Parse SDK for Android和GCM在Parse数据库发生更改后获取通知。
应用的onCreate()调用以下代码行:

ParseGCM.register(context);

在Android 13设备上,此行会导致RuntimeException异常:
原因:java. lang.非法参数异常:com. myapp:以S+(版本31及更高版本)为目标要求在创建挂起Intent时指定FLAG_IMMUTABLE或FLAG_MUTABLE之一。强烈考虑使用FLAG_IMMUTABLE,仅当某些功能依赖于可变的挂起Intent时才使用FLAG_MUTABLE,例如,如果它需要与内联回复或气泡一起使用。位于android. app。挂起Intent. checkFlags(挂起Intent. java:401)位于android. app。挂起Intent. getBroadcastAsUser(挂起Intent. java:671)位于android. app。挂起Intent. getBroadcast(挂起Intent. java:658)位于com. firebase. jobeDispatcher. GooglePlayDriver。(GoogleDriver. java:72)位于com. parse. gcm。解析GCM. register(解析GCM. Play:39)
Android 11上未发生崩溃

lvmkulzt

lvmkulzt1#

如果您的代码正在处理挂起的Intent,则值得检查,因为对于API级别31及更高级别,您必须指定应用创建的每个PendingIntent对象的可变性。请记住,www.example.com等内容https://developer.android.com/reference/android/app/PendingIntent#FLAG_IMMUTABLESDK 23版本的内容,希望这不是问题。
如果你的代码是这样的:

PendingIntent pendingIntent = PendingIntent.getActivity(context, <your request code>, 
    intent, 
    PendingIntent.FLAG_UPDATE_CURRENT
);

你必须把它改成这样的:

PendingIntent pendingIntent = PendingIntent.getActivity(context, <your request code>,
    intent,
    PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_UPDATE_CURRENT
);

相关问题