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

Android 14 BAL强化:Wear OS PendingIntent警告适配(Target SDK 34+)

问题解答

1. 该警告是否属于预期情况?

不属于预期情况。当前功能正常是因为触发PendingIntent的组件(如系统通知服务、表盘服务)尚未升级到targetSdk34+,但一旦这些组件完成升级,你的Activity启动就会被Android 14的后台活动启动限制(BAL)阻断。这个警告是系统提前提示你存在不符合新规则的配置,必须修复才能保证后续兼容性。

2. 针对SDK34+的正确Opt-in步骤

需要分通知和表盘Complication两种场景分别处理,核心是确保PendingIntent的配置符合Android 14+的后台启动规则:

针对Ongoing Activity通知的PendingIntent

  1. 设置正确的PendingIntent标志:创建PendingIntent时必须使用PendingIntent.FLAG_IMMUTABLE(targetSdk31+强制要求,规避安全风险)。
  2. 配置Activity启动选项:创建ActivityOptions并明确允许后台启动,将其传入PendingIntent的创建方法:
    val activityOptions = ActivityOptions.makeBasic()
        .setBackgroundActivityStartMode(ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOWED)
    val pendingIntent = PendingIntent.getActivity(
        context,
        requestCode,
        intent,
        PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT,
        activityOptions.toBundle()
    )
    
  3. 确保通知的Ongoing属性正确:你的通知必须通过setOngoing(true)标记为持续通知,系统会将这类通知的点击事件视为用户主动交互,允许后台启动Activity。

针对表盘Complication的PendingIntent

  1. 同样使用IMMUTABLE标志:创建Complication用的PendingIntent时,必须添加PendingIntent.FLAG_IMMUTABLE。
  2. 配置后台启动允许选项:和通知场景一致,将带有MODE_BACKGROUND_ACTIVITY_START_ALLOWED的ActivityOptions传入PendingIntent:
    val complicationIntent = Intent(context, YourTimerActivity::class.java)
    val activityOptions = ActivityOptions.makeBasic()
        .setBackgroundActivityStartMode(ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOWED)
    val pendingIntent = PendingIntent.getActivity(
        context,
        complicationRequestCode,
        complicationIntent,
        PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT,
        activityOptions.toBundle()
    )
    
  3. 在ComplicationProvider中正确返回:在你的ComplicationProviderService的onComplicationUpdate方法中,将配置好的PendingIntent设置给Complication数据对象。

额外检查项

  • 确认目标Activity的Manifest配置中,未禁用后台启动(默认android:allowBackgroundActivityStarts="true",无需额外设置,除非你之前修改过)。
  • 确保依赖的androidx.core库版本足够新(至少1.10.0以上),以支持Android 14的后台启动选项。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 18:33:12