PendingIntent de conflictos de historial de aplicaciones y notificaciones

StackOverflow https://stackoverflow.com/questions/2541884

  •  23-09-2019
  •  | 
  •  

Pregunta

Estoy creando una notificación con algo similar a lo siguiente:

    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 clave aquí son los datos adicionales sobre la intención de la notificación.Una vez que hago clic en la notificación y aparece SomeActivity, aparece la actividad y los datos adicionales están disponibles.

Sin embargo, si salgo de la aplicación, mantengo presionado el botón de inicio hasta que aparezca la lista de actividades recientes y elijo abrir la aplicación nuevamente, los datos adicionales aún se pasan.¿Hay alguna manera de hacer que se pasen estos datos? solo ¿Si la aplicación se abre a través de la notificación y no desde la lista de actividades recientes?

¿Fue útil?

Solución

Parece que se puede comprobar para ver si la actividad se puso en marcha desde el diálogo de las actividades recientes con esto:

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

No sé si esta es la mejor manera, pero funciona.

Otros consejos

Utilice un Intent diferente. Por ejemplo, se podría añadir un <intent-filter> por alguna cadena de acción personalizada, y el uso que para su Notification basada en PendingIntent. En otras palabras, no se puede cambiar de diálogo de las actividades más recientes, pero puede cambiar su lado del conflicto.

Trate con:

int NOTIFICATION_CODE = 1;

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

Modificar el valor NOTIFICATION_CODE para cada notificación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top