如何使用 android 远程输入将额外数据传递给广播接收器
How to pass extra data to a broadcast receiver with android remote input
我已经看到了这个问题的几个重复项,所以如果我错过了一个,我提前道歉但是 none 我发现有一个解决方案,例如 here 不过,我正在尝试做同样的事情。我想使用直接回复(消息传递样式)通知,但我需要添加一些额外的数据(recipientId 等),我很困惑我可以在哪里添加这些额外数据我的代码用于意图、未决意图和 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 = new Bundle();
bundle.putString(Constants.MSG_RECIPIENT, message.getRecipientId());
intent.putExtras(bundle);
作为 RemoteInput 的一部分
RemoteInput remoteInput = new RemoteInput.Builder(NOTIFICATION_REPLY)
.setLabel(replyLabel).addExtras(bundle).build();
在尝试取回数据时,我尝试从 onReceive 意图中以字符串或包的形式获取数据
intent.getExtras();
intent.getStringExtra(Constants.MSG_RECIPIENT);
但对我来说似乎没有任何效果,另一端的结果始终为空(发送时数据绝对不为空)有人能告诉我如何添加意图数据并在另一端检索它吗?
更新
好的,现在可以使用了,我要为其他人添加工作代码,以便发送我将其添加到第一个意图的数据,并在待定意图
上调用 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);
此外,您没有显示将 "extras" 添加到 Intent 的位置。您必须在调用 PendingIntent.getBroadcast()
之前添加它们。
我已经看到了这个问题的几个重复项,所以如果我错过了一个,我提前道歉但是 none 我发现有一个解决方案,例如 here 不过,我正在尝试做同样的事情。我想使用直接回复(消息传递样式)通知,但我需要添加一些额外的数据(recipientId 等),我很困惑我可以在哪里添加这些额外数据我的代码用于意图、未决意图和 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 = new Bundle();
bundle.putString(Constants.MSG_RECIPIENT, message.getRecipientId());
intent.putExtras(bundle);
作为 RemoteInput 的一部分
RemoteInput remoteInput = new RemoteInput.Builder(NOTIFICATION_REPLY)
.setLabel(replyLabel).addExtras(bundle).build();
在尝试取回数据时,我尝试从 onReceive 意图中以字符串或包的形式获取数据
intent.getExtras();
intent.getStringExtra(Constants.MSG_RECIPIENT);
但对我来说似乎没有任何效果,另一端的结果始终为空(发送时数据绝对不为空)有人能告诉我如何添加意图数据并在另一端检索它吗?
更新
好的,现在可以使用了,我要为其他人添加工作代码,以便发送我将其添加到第一个意图的数据,并在待定意图
上调用 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);
此外,您没有显示将 "extras" 添加到 Intent 的位置。您必须在调用 PendingIntent.getBroadcast()
之前添加它们。