Как передать дополнительные данные на приемник вещания с удаленным входом Android
Я видел пару дубликатов для этого вопроса, поэтому заранее прошу прощения, если я пропустил один, но ни у одного, который я нашел, нет решения, в данном случае я пытаюсь сделать то же самое, что и этот хоть. Я хочу использовать уведомления с прямым ответом (стиль сообщения), но мне нужно добавить некоторые дополнительные данные (receientId и т. Д.), И я не понимаю, где я могу добавить эти дополнительные данные, мой код для намерения, ожидающего намерения и 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);
1 ответ
Попробуйте добавить PendingIntent.FLAG_UPDATE_CURRENT
в getBroadcast()
:
replyPendingIntent =
PendingIntent.getBroadcast(this,0,intent,PendingIntent.FLAG_UPDATE_CURRENT);
Кроме того, вы не показали, куда вы добавляете "дополнительные функции" в Intent. Вы должны добавить их, прежде чем позвонить PendingIntent.getBroadcast()
,