gpt4 book ai didi

android - 将通知 ID 发送到每个通知的 Activity

转载 作者:行者123 更新时间:2023-11-30 01:50:46 29 4
gpt4 key购买 nike

我现在很困惑,我一直在阅读几个 SE 示例,它们似乎都在做略有不同的事情。

我想做的是:有一个名为 NotificationActivity 的 Activity ,当我单击通知时,它必须打开该 Activity 并为该 Activity 提供 DeviceId。我不想覆盖或更新任何待处理的 Activity 。每个 Activity 都应该有自己的 Intent 。

NotificationActivity 的实例应该只有一次。

这是我目前的代码:

MyGcmListenerService:

Intent intent = new Intent(this, NotificationActivity.class);
intent.setAction(Intent.ACTION_VIEW);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
//ADD My Extras
intent.putExtra(CommonBundleAttributes.CONNECTING_ACTIVITY_DEVICE_ID, content.DeviceId);
intent.putExtra(CommonBundleAttributes.CONNECTING_ACTIVITY_DEVICE_TYPE_ID, content.DeviceTypeId);
intent.putExtra(CommonBundleAttributes.CONNECTING_ACTIVITY_DEVICE_NAME, content.DeviceName);
//
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);

PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent, PendingIntent.FLAG_UPDATE_CURRENT);

NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.ic_launcher)
.setContentTitle(content.DeviceName)
.setContentText("Notification")
.setAutoCancel(true)
.setSound(ingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION))
.setGroup("Mi:" + content.DeviceId)
.setContentIntent(pendingIntent);
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(NotificationID++, notificationBuilder.build());

和我的 NotificationActivity:

    @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_notification);

deviceId = getIntent().getExtras().getLong(CommonBundleAttributes.CONNECTING_ACTIVITY_DEVICE_ID, -1);
deviceName = getIntent().getExtras().getString(CommonBundleAttributes.CONNECTING_ACTIVITY_DEVICE_NAME, "");
deviceTypeId = getIntent().getExtras().getInt(CommonBundleAttributes.CONNECTING_ACTIVITY_DEVICE_TYPE_ID, 0);

我在这里错过了什么/我想我混淆了所有不同的标志和启动器类型。

如果内存中已经有一个NotificationActivty,我想关闭它并用最新的 Intent 打开一个新的。如果用户手机上有 3 个通知,并且他们点击了所有三个。它必须为上次单击的通知打开 NotificationActivty。

我的未决 Intent 一定有问题吗?

最佳答案

在 NotificationActivity 中,您使用以下代码收集 int 或 long 值,即

notificationID = getIntent().getExtras().getInt(CommonBundleAttributes.CONNECTING_ACTIVITY_NOTIFICATIONID, 0);

然后请使用 putExtra() 传递一个正确的值,即如果收集 int 然后传递 Integer.parseInt(content.DeviceId) 或收集 long 然后传递 Long.parseLong(content.DeviceId) 希望对你有帮助

关于android - 将通知 ID 发送到每个通知的 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33078678/

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