Ich kann anhand meiner Benachrichtigung einen Weg finden, Parameter an meine Aktivität zu senden.
Ich habe einen Dienst, der eine Benachrichtigung erstellt. Wenn der Benutzer auf die Benachrichtigung klickt, möchte ich meine Hauptaktivität mit einigen speziellen Parametern öffnen. ZB eine Artikel-ID, damit meine Aktivität eine spezielle Artikeldetailansicht laden und anzeigen kann. Genauer gesagt, ich lade eine Datei herunter, und wenn die Datei heruntergeladen wird, soll die Benachrichtigung die Absicht haben, dass beim Klicken meine Aktivität in einem speziellen Modus geöffnet wird. Ich habe versucht, putExtra
meine Absicht zu nutzen , kann sie aber nicht extrahieren, also denke ich, dass ich es falsch mache.
Code von meinem Dienst, der die Benachrichtigung erstellt:
// 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);
Code aus meiner Aktivität, der versucht, den zusätzlichen Parameter aus der Benachrichtigung abzurufen:
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") );
}
Die Extras sind immer null und ich bekomme nie etwas in mein Log.
Übrigens ... das onCreate
wird nur ausgeführt, wenn meine Aktivität beginnt. Wenn meine Aktivität bereits gestartet ist, möchte ich auch die Extras sammeln und meine Aktivität gemäß der item_id präsentieren, die ich erhalte.
Irgendwelche Ideen?
PendingIntent.getActivity()
mit der Flagge anrufenPendingIntent.FLAG_UPDATE_CURRENT
, andernfalls werden dieselben Extras für jede Benachrichtigung wiederverwendet.