You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter适配Android 12启动崩溃:PendingIntent FLAG属性设置咨询

Flutter Android 12 PendingIntent 崩溃解决方案

1. PendingIntent 配置修改方法

Android 12(API 31)强制要求所有PendingIntent必须明确指定FLAG_IMMUTABLE或FLAG_MUTABLE标记,未指定时会抛出异常触发崩溃。根据你的代码场景修改对应位置即可:

  • 自定义原生代码场景
    修改路径:android/app/src/main/kotlin/(或Java对应目录)下你自行实现的包含PendingIntent创建逻辑的类,常见于通知、广播、桌面快捷方式等相关原生逻辑。
    修改示例:
    原有错误写法:
// 旧版写法未指定mutable标记,Android12下会崩溃
val pendingIntent = PendingIntent.getActivity(context, requestCode, intent, 0)

修改后写法(大部分场景直接用FLAG_IMMUTABLE即可,仅当你需要后续修改PendingIntent携带的Intent内容时才使用FLAG_MUTABLE):

val pendingIntent = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
    PendingIntent.getActivity(context, requestCode, intent, PendingIntent.FLAG_IMMUTABLE)
} else {
    // 低于Android12的版本不需要强制指定
    PendingIntent.getActivity(context, requestCode, intent, 0)
}
  • 第三方依赖问题场景
    如果你的项目中没有手动创建PendingIntent的逻辑,大概率是引入的第三方Flutter插件未适配Android12,先将所有用到的插件升级到官方最新的适配版本,主流插件均已修复该问题。

2. WorkManager 2.7.1 依赖添加位置

WorkManager 2.7.1依赖需要添加到Android层的构建配置文件中,具体路径为android/app/build.gradle,找到文件中的dependencies代码块,新增对应依赖即可:

dependencies {
    // 保留你项目中已有的其他依赖配置,新增下面一行
    implementation "androidx.work:work-runtime-ktx:2.7.1"
    // 如果你的原生层用Java开发,替换为下面这行
    // implementation "androidx.work:work-runtime:2.7.1"
}

添加完成后在android目录下执行./gradlew clean清理构建缓存,再重新运行项目即可修复WorkManager旧版本导致的PendingIntent异常问题。

内容的提问来源于stack exchange,提问作者user13219486

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 15:09:06