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

Android 12下PendingIntent崩溃问题排查与代码修正请求

问题分析与代码修正

一、修正自有代码中的问题

1. Broadcast类代码优化

原代码将intent.setFlags()嵌套在getActivity参数中,可读性差,同时需补充版本兼容逻辑避免低版本报错:

Intent intent = new Intent(context, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

// 根据Android版本设置PendingIntent标记
int pendingIntentFlags;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
    pendingIntentFlags = PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE;
} else {
    pendingIntentFlags = PendingIntent.FLAG_UPDATE_CURRENT;
}

PendingIntent contentIntent = PendingIntent.getActivity(context, 0, intent, pendingIntentFlags);

2. MainActivity代码修正

原代码错误地给广播类型的Intent添加了Intent.FLAG_ACTIVITY_NEW_TASK(该标记仅适用于启动Activity的Intent),同时补充版本兼容:

// 注意:此处Intent需指向你的自定义BroadcastReceiver类,而非Activity
Intent intent = new Intent(this, YourBroadcastReceiver.class);

// 根据Android版本设置PendingIntent标记
int pendingIntentFlags;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
    pendingIntentFlags = PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE;
} else {
    pendingIntentFlags = PendingIntent.FLAG_UPDATE_CURRENT;
}

PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, pendingIntentFlags);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);

注:替换YourBroadcastReceiver为你项目中实际定义的广播接收器类。

二、解决Facebook广告SDK引发的崩溃

从Logcat栈信息可见,崩溃源于Facebook广告SDK内部创建PendingIntent时未指定FLAG_IMMUTABLE/FLAG_MUTABLE,解决方案:

  • 将Facebook广告SDK升级至9.0.0及以上版本(该版本开始适配Android 12的PendingIntent要求)。
  • 若使用Gradle依赖,更新配置:
implementation 'com.facebook.android:audience-network-sdk:9.1.0' // 或更高稳定版本

核心注意事项

  • Android 12(API 31+)强制要求创建PendingIntent时必须指定FLAG_IMMUTABLE或FLAG_MUTABLE,优先使用FLAG_IMMUTABLE,仅当需要修改PendingIntent内部Intent时才用FLAG_MUTABLE(如内联回复场景)。
  • 低版本Android系统不支持这两个标记,必须通过版本判断规避类找不到的异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 11:54:54