gpt4 book ai didi

java - 触摸其他通知时重新发送已取消的通知。安卓

转载 作者:行者123 更新时间:2023-11-29 21:03:12 25 4
gpt4 key购买 nike

我遇到一个问题,无论用户触摸什么通知,我总是收到相同的通知,即使它已被取消。

用户触摸的第一个通知是唯一会传送到我的待定 Intent 的通知,直到设备重新启动(然后第一个触摸的通知成为新的加州旅馆通知)。 notification tray

以下是我构建通知的方式:

    final Bundle extras = new Bundle();
final int notificationId = Integer.parseInt(payload.getObjectId());

extras.putInt(NOTIFICATION_ID, notificationId);

final Intent intent = new Intent(context,
PushNotificationLauncherActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

intent.putExtras(extras);

final NotificationCompat.Builder builder = new NotificationCompat.Builder(
context);
builder.setContentTitle(context.getString(R.string.app_name));
builder.setContentText(payload.getText());
builder.setSmallIcon(R.drawable.icon_launcher);
builder.setAutoCancel(true);

final PendingIntent pIntent = PendingIntent.getActivity(context, 0,
intent, 0, extras);

builder.setContentIntent(pIntent);

final Notification notification;
if (Build.VERSION.SDK_INT < 16) {
notification = builder.getNotification();
} else {
notification = builder.build();
}

notification.flags |= Notification.FLAG_AUTO_CANCEL;

notificationManager.notify(notificationId, notification);

然后我的 PushNotificationLauncherActivity 中有这个:

    final Bundle extras = getIntent().getExtras();

final int notificationId = extras
.getInt(SocialcastGoogleCloudMessageReceiver.NOTIFICATION_ID);

final NotificationManager notificationManager = (NotificationManager) this
.getSystemService(NOTIFICATION_SERVICE);
// please go away
notificationManager.cancel(notificationId);

Log.d(PushNotificationLauncherActivity.class.getSimpleName(),
"Touched notification ID: " + String.valueOf(notificationId));

无论我触摸哪个通知,在日志中 Touched notification ID: 1234 将始终显示,即使我触摸的通知的 ID 为 56789

我非常怀疑这是我的测试设备的问题,但万一它有帮助;我正在使用带有 KitKat 4.4.4 的 2013 Nexus 7 和 Dalvik 运行时(不是 ART)Build KTU84P。

最佳答案

在此处将您的notificationId 作为请求代码 传递:

final PendingIntent pIntent = PendingIntent.getActivity(context, 0,
intent, 0, extras);

将此更改为:

final PendingIntent pIntent = PendingIntent.getActivity(context, notificationId,
intent, 0, extras);

比较两个 Intent 实例时,不会比较包含的 Bundles。所以,从安卓的角度来看,这两个 Intent 是一样的。

有趣的是,比较了 reqCode(PendingIntent.getActivity(...) 中的第二个参数)。这应该使您的 Intents 独一无二。

关于java - 触摸其他通知时重新发送已取消的通知。安卓,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25373200/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com