Android API 31级别导致应用中Flutter本地通知出错

yptwkmov  于 2023-10-22  发布在  Flutter
关注(0)|答案(1)|浏览(157)

根据Google的政策,我更新了我的targetSdkVersion和compileSdkVersion到31。但我注意到Flutter本地通知包现在会对传入的消息抛出错误,如下所示:Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent. Strongly consider using FLAG_IMMUTABLE, only use FLAG_MUTABLE if some functionality depends on the PendingIntent being mutable, e.g. if it needs to be used with inline replies or bubbles.
我检查了与此错误相关的所有堆栈溢出答案,并进行了以下更改:
1.在build.gradle文件中添加以下Java和Kotlin依赖项:build.gradle file
1.在活动标签下方添加了此接收器:Receiver tag
1.在活动标签下添加了导出标志:Exported flag
1.在www.example.com中将gradle版本更新为最新gradle-wrapper.properties:Latest gradle version我在代码中没有使用任何PendingIntent,并在模拟器上使用API 31级别模拟应用程序。有人可以帮助我解决这个问题与消息通知?

c9qzyr3d

c9qzyr3d1#

看起来在提供解决方案的flutter_local_notifications repo中有一个问题。See the issue here
如果你不想更新软件包的版本,你可以派生你正在使用的版本,并在本地修复问题。
1.您可以访问FlutterLocalNotificationsPlugin.java文件
1.查找所有错误行,如PendingIntent pendingIntent = PendingIntent.getBroadcast(context, notificationDetails.id, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT),并替换为PendingIntent pendingIntent = PendingIntent.getBroadcast(context, notificationDetails.id, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE)
您必须对PendingIntent的每个示例执行此操作。对我很有效。

相关问题