Saya dapat menemukan cara untuk mengirim parameter ke aktivitas saya dari notifikasi saya.
Saya memiliki layanan yang membuat pemberitahuan. Ketika pengguna mengklik pemberitahuan saya ingin membuka aktivitas utama saya dengan beberapa parameter khusus. Misalnya id item, sehingga aktivitas saya dapat memuat dan menyajikan tampilan detail item khusus. Lebih spesifik, saya mengunduh file, dan ketika file diunduh saya ingin notifikasi memiliki niat bahwa ketika diklik itu membuka aktivitas saya dalam mode khusus. Saya telah mencoba menggunakan putExtra
pada maksud saya, tetapi sepertinya tidak bisa mengekstraknya, jadi saya pikir saya salah melakukannya.
Kode dari layanan saya yang membuat Pemberitahuan:
// construct the Notification object.
final Notification notif = new Notification(R.drawable.icon, tickerText, System.currentTimeMillis());
final RemoteViews contentView = new RemoteViews(context.getPackageName(), R.layout.custom_notification_layout);
contentView.setImageViewResource(R.id.image, R.drawable.icon);
contentView.setTextViewText(R.id.text, tickerText);
contentView.setProgressBar(R.id.progress,100,0, false);
notif.contentView = contentView;
Intent notificationIntent = new Intent(context, Main.class);
notificationIntent.putExtra("item_id", "1001"); // <-- HERE I PUT THE EXTRA VALUE
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
notif.contentIntent = contentIntent;
nm.notify(id, notif);
Kode dari Aktivitas saya yang mencoba mengambil parameter tambahan dari pemberitahuan:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Bundle extras = getIntent().getExtras();
if(extras != null){
Log.i( "dd","Extra:" + extras.getString("item_id") );
}
Ekstra selalu nol dan saya tidak pernah memasukkan apa pun ke dalam log saya.
Btw ... onCreate
ini hanya berjalan ketika aktivitas saya mulai, jika aktivitas saya sudah dimulai saya juga ingin mengumpulkan ekstra dan menyajikan aktivitas saya sesuai dengan item_id yang saya terima.
Ada ide?
PendingIntent.getActivity()
dengan benderaPendingIntent.FLAG_UPDATE_CURRENT
, jika tidak, tambahan yang sama akan digunakan kembali untuk setiap pemberitahuan.