Я получаю несколько уведомлений одновременно.Каждое уведомление имеет URL.Например, уведомления запускаются в этом порядке.Notification 1 = "url 1", Notification 2 = "url 2", Notification 3 = "url 3".
Что я хочу сделать, это передать URL-адрес Activity как StringExtras и соответствующим образом обработать уведомление, когдащелкнул.Но всякий раз, когда я получаю уведомления и нажимаю на любое уведомление, я получаю «URL 3» в своей активности, даже если я нажимаю «Уведомление 1» или «Уведомление 2».(Это потому, что «Уведомление 3» запускается в конце, а intent.putStringExtra содержит «URL-адрес 3».
Я много искал, но мне пришлось опубликовать это. Может кто-нибудь дать мне лучшерешение для достижения этой цели?
Вот мой OnMessageRecieve
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
if (remoteMessage.getData().size() > 0) {
showNotification(remoteMessage.getData().get('url'));
}
}
А вот как я помещаю этот URL в Intent.
private void showNotification(String url) {
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
Intent redirectIntent = new Intent(context, MainActivity.class);
redirectIntent.putExtra("url", url);
PendingIntent contIntent = PendingIntent.getActivity(this, 0, redirectIntent, PendingIntent.FLAG_ONE_SHOT);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
mNotificationManager.createNotificationChannel(new NotificationChannel("1", "Ny Lottery", NotificationManager.IMPORTANCE_HIGH));
}
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this)
// TODO: set notification icon
.setSmallIcon(R.mipmap.ic_launcher_foreground)
.setContentTitle(title)
.setContentText(message)
.setStyle(new NotificationCompat.BigTextStyle()
.bigText(message))
.setChannelId("1")
.setContentIntent(contIntent)
.setDefaults(Notification.DEFAULT_ALL)
.setAutoCancel(true);
mNotificationManager.notify((int)System.currentTimeMillis(), mBuilder.build());
}
И в моей MainActivity,Я получаю URL.
String url = getIntent().getStringExtra("url");