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

适配Android S+(API31+)配置PendingIntent后App仍崩溃求助

Android 12 PendingIntent崩溃问题解决

适配S+(版本31及以上)要求创建PendingIntent时必须指定FLAG_IMMUTABLE或FLAG_MUTABLE。强烈建议使用FLAG_IMMUTABLE,仅当功能依赖可变PendingIntent(如需用于内联回复或气泡功能)时才使用FLAG_MUTABLE。

你已经在代码中添加了FLAG_IMMUTABLE但仍崩溃,核心原因通常是项目中存在其他未指定合规flag的PendingIntent创建逻辑,或者flag组合错误,以下是具体排查和解决步骤:

  • 全局检索所有PendingIntent创建方法:搜索PendingIntent.getActivity()、PendingIntent.getBroadcast()、PendingIntent.getService()、PendingIntent.getForegroundService(),确保每一处都明确设置FLAG_IMMUTABLE或FLAG_MUTABLE。
  • 排查第三方库:检查推送、统计等第三方SDK是否在内部创建PendingIntent,若有,升级至支持Android 12的版本;暂时无法升级的,可联系SDK提供商获取兼容方案。
  • 修正flag组合:如果需要复用或更新PendingIntent内容,需将FLAG_IMMUTABLE/FLAG_MUTABLE与FLAG_UPDATE_CURRENT等旧flag组合使用,示例代码如下:
    private Notification buildNotification() {
        int playButtonResId = isPaused ? R.drawable.ic_play_arrow_white_24dp : R.drawable.ic_pause_white_24dp;
    
        PendingIntent clickIntent = PendingIntent.getActivity(
                this, 1,
                new Intent(this, MainActivity.class),
                PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_UPDATE_CURRENT);
        // 后续Notification构建逻辑...
    }
    
  • 检查编译配置:确保build.gradle中targetSdkVersion设置为31及以上,同时更新appcompat、core-ktx等核心依赖到最新稳定版,避免系统兼容层异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 20:36:23