可以通过设置 PendingIntent 的 flag 来解决此问题。需要将 PendingIntent 的 flag 设置为 FLAG_ONE_SHOT 或者 FLAG_CANCEL_CURRENT,具体取决于业务需求。
示例代码:
// 创建 PendingIntent 对象 PendingIntent pendingIntent = PendingIntent.getBroadcast(context, requestCode, intent, PendingIntent.FLAG_ONE_SHOT);
// 设置 NotificationCompat.Builder 的 PendingIntent Builder.setContentIntent(pendingIntent);
// 获取 NotificationManager NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
// 构建 Notification 对象 Notification notification = Builder.build();
// 发送通知 notificationManager.notify(notificationId, notification);
// BroadcastReceiver 中的代码 public class MyBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // 处理逻辑 } }
// 注册 BroadcastReceiver IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction("com.test.action"); context.registerReceiver(new MyBroadcastReceiver(), intentFilter);