Wie werden Parameter von einem Benachrichtigungsklick an eine Aktivität gesendet?

Ich kann anhand meiner Benachrichtigung eine Möglichkeit 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. Wenn die Datei heruntergeladen wird, soll die Benachrichtigung darauf hinweisen, dass beim Klicken meine Aktivität in einem speziellen Modus geöffnet wird. Ich habe versucht zu verwendenputExtra auf meine absicht, aber kann nicht scheinen, es zu 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, die 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 ... dieonCreate wird nur ausgeführt, wenn meine Aktivität startet. Wenn meine Aktivität bereits gestartet ist, möchte ich auch die Extras sammeln und meine Aktivität gemäß der empfangenen item_id präsentieren.

Irgendwelche Ideen?

Antworten auf die Frage(12)

Ihre Antwort auf die Frage