Domanda

Sto creando una notifica con qualcosa di simile a quanto segue:

    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);

La chiave qui sono i dati extra sul Intenti per la notifica. Una volta che clicco sulla notifica e la porta in su SomeActivity, che porta in primo piano l'attività ed i dati supplementare è disponibile.

Tuttavia, se esco l'applicazione, tenere premuto il tasto home fino a quando l'elenco attività recenti si avvicina, e scegliere di aprire l'applicazione di nuovo, i dati in eccesso è ancora passata. C'è un modo per rendere questi dati viene passato solo se l'applicazione viene aperta tramite la notifica, e non dalla lista attività recenti?

È stato utile?

Soluzione

Sembra che posso controllare per vedere se l'attività è stata lanciata dalle recenti attività di dialogo con questo:

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

Non so se questo è il modo migliore, ma funziona.

Altri suggerimenti

Usa un Intent diverso. Ad esempio, è possibile aggiungere un <intent-filter> per qualche stringa un'azione personalizzata, e l'uso che per la vostra Notification PendingIntent-based. In altre parole, non è possibile modificare la finestra di attività più-recente, ma è possibile modificare la parte del conflitto.

Prova con:

int NOTIFICATION_CODE = 1;

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

Modifica valore NOTIFICATION_CODE per ogni notifica.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top