gpt4 book ai didi

android - 单击差异通知后如何打开相同的 Activity

转载 作者:太空宇宙 更新时间:2023-11-03 11:25:27 25 4
gpt4 key购买 nike

我花了很多时间来解决我的问题。我在 android 中编写了一个 Messenger 客户端。我的应用程序收到收入消息并发出通知。在通知栏中,我在通知项中显示每条收入消息。当点击通知项目时,它会打开一个对话 Activity ,列出从开始到现在的所有消息。一切都很完美,但是当我点击通知栏中的另一个项目时,没有任何反应! (它必须为另一个对话重新加载数据)。这是我发出通知的代码:

private void showNotification(String message, Class activity, Message messageObject) {
//Get the Notification Service
NotificationManager notificationManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
CharSequence text = message;//getText(R.string.service_started);
Notification notification = new Notification(R.drawable.ic_launcher, text, System.currentTimeMillis());
notification.flags |= Notification.FLAG_AUTO_CANCEL;
Intent callbackIntent = new Intent(context, activity);
if(messageObject != null)
{
callbackIntent.putExtra("conversation", MessageManager.getProvider().getConversation(messageObject.getConversationId()));
}
//callbackIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
int myUniqueValue = new Random().nextInt();
PendingIntent contentIntent = PendingIntent.getActivity(context, myUniqueValue, callbackIntent, PendingIntent.FLAG_ONE_SHOT);
notification.setLatestEventInfo(context, messageObject.getFrom(), text, contentIntent);
notificationManager.notify(messageObject.getFrom(), myUniqueValue, notification);
}

这是调用 showNotification 函数的代码块

showNotification(message.getBody(), ConversationActivity.class, messageObject);

最佳答案

尽管您努力提供唯一值,但这些 PendingIntent 都被系统视为相同,因此一旦您点击其中一个,其余的将呈现惰性。

您需要添加一些区别于callbackIntent 的内容;我建议发明一个数据 URI,其中包含 session ID 或保证每个通知都不同的其他内容(请参阅 setData )。

最后,我鼓励您尝试将多个通知折叠到一个图标中 — 您不想向用户发送垃圾邮件。查看Notifications section in the Android Design guide ,在“堆叠您的通知”下。

关于android - 单击差异通知后如何打开相同的 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15908395/

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