Bildirimimden etkinliğime parametre göndermenin bir yolunu bulabilirim.
Bildirim oluşturan bir hizmetim var. Kullanıcı bildirimi tıkladığında, ana faaliyetimi bazı özel parametrelerle açmak istiyorum. Örneğin bir öğe kimliği, böylece etkinliğim özel bir öğe ayrıntı görünümü yükleyebilir ve sunabilir. Daha spesifik olarak, bir dosya indiriyorum ve dosya indirildiğinde, bildirime tıklandığında etkinliğimi özel bir modda açma niyetinde olmasını istiyorum. putExtra
Niyetimde kullanmaya çalıştım , ama onu ayıklayamıyorum, bu yüzden yanlış yaptığımı düşünüyorum.
Bildirimi oluşturan hizmetimin kodu:
// 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);
Bildirimden fazladan parametreyi almaya çalışan Etkinliğimdeki kod:
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") );
}
Ekstralar her zaman boştur ve günlüküme hiçbir şey almam.
Btw ... onCreate
sadece etkinliğim başladığında çalıştırılır, etkinliğim zaten başlamışsa ekstraları toplamak ve aldığım item_id'e göre etkinliğimi sunmak istiyorum.
Herhangi bir fikir?
PendingIntent.getActivity()
Bayrağa başvurmanız gerekirPendingIntent.FLAG_UPDATE_CURRENT
, aksi takdirde her bildirim için aynı ekstralar yeniden kullanılır.