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 ) }
额外检查点
- 确认处理Scheme的Activity在
AndroidManifest.xml中配置了正确的<intent-filter>,确保Scheme能被正确匹配(你第一次点击按钮1能正常启动应用,这一步应该没问题)。 - 如果你的前台服务会动态更新通知,确保每次更新通知时都重新创建这两个带有唯一requestCode的PendingIntent,避免旧的PendingIntent实例残留。
内容的提问来源于stack exchange,提问作者Juhyun Park
相关产品推荐
相关产品推荐

