gpt4 book ai didi

android - 如何使用 android 远程输入将额外数据传递给广播接收器

转载 作者:行者123 更新时间:2023-11-29 01:00:42 25 4
gpt4 key购买 nike

对于这个问题,我已经看到了几个重复的问题,所以如果我错过了一个,我提前道歉,但我发现没有一个有解决方案,例如 here不过,我正在尝试做同样的事情。我想使用直接回复(消息传递样式)通知,但我需要添加一些额外的数据(recipientId 等),我很困惑我可以在哪里添加这些额外数据我的代码用于 Intent 、未决 Intent 和 RemoteInput 看起来像这个

    String replyLabel = getString(R.string.notif_action_reply);
intent = new Intent(this, ReplyReceiver.class);

replyPendingIntent = PendingIntent.getBroadcast(this,0,intent,0);
RemoteInput remoteInput = new
RemoteInput.Builder(NOTIFICATION_REPLY).setLabel(replyLabel).build();
NotificationCompat.Action action = new
NotificationCompat.Action.Builder(R.drawable.ic_send_white_24dp,
this.getString(R.string.reply), replyPendingIntent)
.addRemoteInput(remoteInput)
.setAllowGeneratedReplies(true)
.build();

现在要发送额外的数据,我尝试将其添加为字符串

intent.putExtra(Constants.MSG_RECIPIENT, message.getRecipientId());

和 bundle

Bundle bundle = new Bundle();
bundle.putString(Constants.MSG_RECIPIENT, message.getRecipientId());
intent.putExtras(bundle);

既是 RemoteInput 的 Intent ,也是 RemoteInput 的一部分

RemoteInput remoteInput = new RemoteInput.Builder(NOTIFICATION_REPLY)
.setLabel(replyLabel).addExtras(bundle).build();

在尝试取回数据时,我尝试从 onReceive Intent 中以字符串或包的形式获取数据

intent.getExtras(); 
intent.getStringExtra(Constants.MSG_RECIPIENT);

但似乎对我没有任何作用,结果在另一端始终为空(发送时数据绝对不为空)有人可以告诉我如何添加 Intent 数据并在另一端检索它吗?

更新

好的,它现在可以工作了,我要为其他人添加工作代码,以便发送我将其添加到第一个 Intent 的数据,并在未决 Intent 上调用 FLAG_UPDATE_CURRENT

    String replyLabel = getString(R.string.notif_action_reply);
intent = new Intent(this, ReplyReceiver.class);
//intent.putExtras(bundle);
intent.putExtra(Constants.MSG_SENDER_NAME, message.getSenderName());
intent.putExtra(Constants.MSG_SENDER, message.getSenderId());
intent.putExtra(Constants.MSG_RECIPIENT_NAME,
message.getRecipientName());
intent.putExtra(Constants.MSG_RECIPIENT, message.getRecipientId());

replyPendingIntent = PendingIntent.getBroadcast
(this,0,intent,PendingIntent.FLAG_UPDATE_CURRENT);
RemoteInput remoteInput = new
RemoteInput.Builder(NOTIFICATION_REPLY).setLabel(replyLabel).build();
NotificationCompat.Action action = new
NotificationCompat.Action.Builder(R.drawable.ic_send_white_24dp,
this.getString(R.string.reply), replyPendingIntent)
.addRemoteInput(remoteInput)
.setAllowGeneratedReplies(true)
.build();

为了接收它,我在 onReceive 中使用它

 String senderId = intent.getStringExtra(Constants.MSG_SENDER_NAME);

最佳答案

尝试将 PendingIntent.FLAG_UPDATE_CURRENT 添加到 getBroadcast():

replyPendingIntent = 
PendingIntent.getBroadcast(this,0,intent,PendingIntent.FLAG_UPDATE_CURRENT);

此外,您没有显示在何处向 Intent 添加了“额外内容”。您必须在调用 PendingIntent.getBroadcast() 之前添加它们。

关于android - 如何使用 android 远程输入将额外数据传递给广播接收器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51390363/

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