android - 两个按钮,一个活动
问题描述
我的通知中有两个按钮,它们打开相同的活动,但作为额外的不同数据发送。我真的需要创建 2 个待定意图和 2 个意图吗?也许有一些缩短版本?
Intent intent1 = new Intent(this, ResponseActivity.class); //same
intent1.putExtra("RES","a");
intent1.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pendingIntent1 = PendingIntent.getActivity(this, 1, intent1, PendingIntent.FLAG_UPDATE_CURRENT);
Intent intent2 = new Intent(this, ResponseActivity.class); //same
intent2.putExtra("RES","b"); //but different
intent2.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pendingIntent2 = PendingIntent.getActivity(this, 1, intent2, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this, NOTIFICATION_CHANNEL_ID)
.setSmallIcon(R.drawable.ic_launcher_background)
.addAction(0, "A", pendingIntent1)
.addAction(0, "B", pendingIntent2)
.setLargeIcon(bitmap)
.setContentTitle(userDB.getName())
.setContentText(smallText)
.setAutoCancel(true)
.setDefaults(Notification.DEFAULT_ALL)
.setColor(getResources().getColor(R.color.colorPrimary))
.setPriority(NotificationCompat.PRIORITY_DEFAULT);
解决方案
你的代码有问题。您的代码最终将在两个按钮上设置相同PendingIntent
的值。这是因为在比较s 以确定给定 的 a 是否已经存在Intent
时,不考虑“额外” 。在您的情况下, 2看起来相同,因此 2 调用将返回相同的。Intent
PendingIntent
Intent
Intent
PendingIntent.getActivity()
PendingIntent
您需要将代码更改为如下所示:
Intent intent = new Intent(this, ResponseActivity.class); //same
intent.putExtra("RES","a");
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pendingIntent1 = PendingIntent.getActivity(this, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT);
// Update the "extra" in the Intent
intent.putExtra("RES","b"); //but different
PendingIntent pendingIntent2 = PendingIntent.getActivity(this, 2, intent, PendingIntent.FLAG_UPDATE_CURRENT);
我用一个Intent
来制作 2 个不同PendingIntent
的 s。这里的关键是对requestCode
(这是 的第二个参数PendingIntent.getActivity()
)使用不同的值。这可确保您获得 2 个不同PendingIntent
的 s。
推荐阅读
- c# - 在 blazor 中向 InputNumber 添加占位符
- persistence - 如何使用持久性库在 swi-prolog 中持久化自定义或非平凡数据类型?
- android - 错误:从二进制存储读取数据时出现问题
- json - 访问数组中的项目
- ios - 如何在 Hstack scrollview swiftUI 中将最后一个索引设为初始值
- javascript - 碰撞后改变球的方向
- javascript - axios onUploadProgress 使用 react native 在 android 上立即返回 100% 进度
- azure - 在不同的资源组中使用 Azure Cli 创建专用终结点
- reactjs - React Native 中的 Stomp 和 SockJs
- parallel-processing - 在 MPP 系统中使用 CREATE TABLE 组织/分发