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

Foreground Service通知PendingIntent仅首次生效问题求助

问题解决方法

核心原因

你的两个PendingIntent使用了相同的requestCode(第二个参数均为0),这会导致系统对两个PendingIntent的识别出现冲突,进而引发按钮1点击失效的问题。虽然两个Intent的Scheme不同,但相同的requestCode可能让系统在内部复用或覆盖其中一个PendingIntent的实例,导致后续点击按钮1时无法触发预期行为。

修复步骤

给两个PendingIntent设置不同的requestCode即可解决问题:

private fun getClickPendingIntent1(context: Context): PendingIntent {
    val schemeString = "scheme://~~whatever"

    return PendingIntent.getActivity(
        context,
        1, // 设置唯一的requestCode
        Intent(Intent.ACTION_VIEW, Uri.parse(schemeString)),
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) 
            PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE 
        else 
            PendingIntent.FLAG_UPDATE_CURRENT
    )
}

private fun getClickPendingIntent2(context: Context): PendingIntent {
    val schemeString = "scheme://~~whatever2"

    return PendingIntent.getActivity(
        context,
        2, // 设置与第一个不同的唯一requestCode
        Intent(Intent.ACTION_VIEW, Uri.parse(schemeString)),
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) 
            PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE 
        else 
            PendingIntent.FLAG_UPDATE_CURRENT
    )
}

额外检查点

  1. 确认处理Scheme的Activity在AndroidManifest.xml中配置了正确的<intent-filter>,确保Scheme能被正确匹配(你第一次点击按钮1能正常启动应用,这一步应该没问题)。
  2. 如果你的前台服务会动态更新通知,确保每次更新通知时都重新创建这两个带有唯一requestCode的PendingIntent,避免旧的PendingIntent实例残留。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 04:46:16