Pertanyaan ekstra maksud digandakan ketika menggunakan FLAG_UPDATE_CURRENT di PendingIntent saat membuat notifikasi Android


Saya ingin membuat beberapa notifikasi yang meluncurkan suatu aktivitas (atau menyegarkannya) untuk menampilkan deskripsi produk.

Notification notification = new Notification(R.drawable.applicationicon,
            Resources.getString("NewSaleNotification", context),
            System.currentTimeMillis());
// Hide the notification after its selected
notification.flags |= Notification.FLAG_AUTO_CANCEL;

Intent intent = new Intent(context, MainApplication.class);
intent.putExtra("saleid", saleid);

// to be sure the activity won't be restarted
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);

PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent,
            PendingIntent.FLAG_UPDATE_CURRENT);
notification.setLatestEventInfo(context, SaleTitle, SaleMessage, pendingIntent);
notificationManager.notify(saleid, notification);

Ketika saya membuat PendingIntent, saya memiliki 4 pilihan: FLAG_CANCEL_CURRENT, FLAG_NO_CREATE, FLAG_ONE_SHOT dan FLAG_UPDATE_CURRENT.

Definisi yang terakhir (http://developer.android.com/reference/android/app/PendingIntent.html#FLAG_UPDATE_CURRENT) adalah apa yang ingin saya lakukan tetapi itu tidak berfungsi sebagaimana mestinya. Jika saya membuat 2 notifikasi, mereka berdua memiliki tambahan 'obral' yang sama dengan yang terbaru. Bagaimana saya dapat membuat lebih dari satu pemberitahuan dengan tambahan 'obral' tambahan?


18
2018-05-10 15:11


asal


Jawaban:


tetapi tidak berfungsi sebagaimana mestinya

Ya, benar.

Jika saya membuat 2 notifikasi, mereka berdua memiliki tambahan 'obral' yang sama dengan yang terbaru.

Inilah tepatnya apa dokumentasi kata yang seharusnya terjadi.

Bagaimana saya dapat membuat lebih dari satu pemberitahuan dengan tambahan 'saleid' ekstra?

Opsi # 1: Masukkan string aksi yang berbeda di masing-masing Intents. Ini akan membuat mereka berbeda (dari sudut pandang filterEquals()) dan memberi mereka terpisah PendingIntents. Namun, karena Anda menetapkan komponen di Intent (MainApplication.class), tindakan tidak akan mempengaruhi bagaimana Intent dirutekan.

Opsi # 2: Gunakan yang berbeda requestCode (Parameter ke-2) pada Anda getActivity() panggilan. Meskipun ini didokumentasikan sebagai "saat ini tidak digunakan", hasilnya berbeda PendingIntent benda dikembalikan. Namun, karena perilaku ini tidak terdokumentasi, itu mungkin berubah di masa depan.


25
2018-05-10 16:37