Frage

Ich bin eine Benachrichtigung mit etwas ähnlich den folgenden erstellen:

    Intent ni = new Intent(this, SomeActivity.class);
    ni.putExtra("somestring", "somedata");
    PendingIntent contentIntent = 
        PendingIntent.getActivity(this, 0, ni, 
                PendingIntent.FLAG_UPDATE_CURRENT|PendingIntent.FLAG_ONE_SHOT);
    Context context = getApplicationContext();

    notification.setLatestEventInfo(context, 
            res.getString(R.string.app_name), 
            text, contentIntent);

Der Schlüssel hier ist die zusätzlichen Daten über den für die Meldung Intent. Sobald ich auf die Benachrichtigung klicken und es bringt SomeActivity, bringt es die Aktivität und die zusätzlichen Daten verfügbar sind.

Allerdings, wenn ich die App verlassen, halten Sie die Home-Taste, bis die jüngsten Aktivitäten Liste kommt, und wählen Sie die App wieder zu öffnen, werden die zusätzlichen Daten noch übergeben wird. Gibt es eine Weise, die ich diese Daten machen kann erhalten geben nur , wenn die App über die Benachrichtigung geöffnet werden, und nicht von der jüngsten Aktivitäten Liste?

War es hilfreich?

Lösung

Sieht aus wie ich überprüfen kann, ob die Aktivität aus dem jüngsten Aktivitäten Dialog mit diesem ins Leben gerufen wurde:

if((getIntent().getFlags() & 
        Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) != 0) {
    // ignore extras
}
else {
    // do not ignore extras
}

Ich weiß nicht, ob dies der beste Weg ist, aber es funktioniert.

Andere Tipps

Verwenden Sie einen anderen Intent. Zum Beispiel könnten Sie eine <intent-filter> für einige benutzerdefinierte Aktion Zeichenfolge, und verwenden Sie das für Ihre Notification-basierte PendingIntent hinzuzufügen. Mit anderen Worten, können Sie nicht die Macht der letzten Aktivitäten ändern Dialog, aber Sie können Ihre Seite des Konflikts ändern.

Versuchen Sie, mit:

int NOTIFICATION_CODE = 1;

PendingIntent contentIntent = 
          PendingIntent.getActivity(this, 
                                    NOTIFICATION_CODE, 
                                    ni,
                                    PendingIntent.FLAG_UPDATE_CURRENT | 
                                    PendingIntent.FLAG_ONE_SHOT
                                   );

Ändern NOTIFICATION_CODE Wert für jede Meldung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top