5

Voglio aprire un'attività quando clicco sulla notifica dalla barra di stato. Ho visto questa risposta su StackOverflow ma nessuna di queste risposte funziona per me. Questo problema si verifica solo sui dispositivi Lollipop e il modo migliore di riprodurlo è: 1. avviare l'app. 2. Ritornare all'app. 3. Ricevi una notifica push. 4. Fare clic sulla notifica e provare con 3-4 notifiche push.Android clicca sulla notifica non apre l'attività allegata

Qui di seguito è il mio codice: Ho anche provato la seguente:

  1. aggiungendo Intent.ACTION_MAIN
  2. Intent.CATEGORY_LAUNCHER l'intento
  3. PendingIntent.FLAG_UPDATE_CURRENT.
  4. android: esportato = "true" nel mio AndroidManifest.xml

ma non funziona niente. Sto vedendo questo problema solo su dispositivi Lollipop. Si prega di notare che vedo questo problema a intermittenza. Questo è qualcosa legato all'intento di rimanere nella cache e di non essere consegnato. Per favore aiuto.

PendingIntent pendingIntent = getPendingIntent(context, payload); 
Builder notificationBuilder = new NotificationCompat.Builder(context) 
      .setSmallIcon(R.drawable.ic_stat) 
      .setContentTitle(res.getString(R.string.app_name)) 
      .setContentText(payload.getMessage()) 
      .setTicker(payload.getMessage()) 
      .setContentIntent(pendingIntent) 
      .setSound(soundUri); 

private PendingIntent getPendingIntent(Context context, NotificationPayload payload) { 
    int requestID = (int) System.currentTimeMillis(); 
    Intent intent = new Intent(context, DeepLinkActivity.class); 
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    intent.setPackage(BuildConfig.APPLICATION_ID); 
    intent.putExtra(NotificationHelper.KEY_NOTIFICATION_PAYLOAD, payload); 
    return PendingIntent.getActivity(context, requestID, intent, PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_CANCEL_CURRENT); 
} 
+0

Hai impostato il pendingIntent al tuo generatore di notifiche? – k0sh

+0

ho lo stesso problema .. senza fortuna fino ad ora –

risposta

0

Avete impostato l'intento in sospeso nel metodo setContentIntent di notifica?

Prova questo, per me funziona su tutte le versioni API

 Intent intent = new Intent(this, TestActivity.class); 
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_CANCEL_CURRENT); 

    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this) 
       .setSmallIcon(R.drawable.logo) 
       .setContentTitle(getResources().getString(R.string.notification_title)) 
       .setContentIntent(pendingIntent); 

    NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 
    notificationManager.notify(NOTIFICATION_ID, notificationBuilder.build()); 
+0

Sì, ho. Ho aggiunto il mio codice sopra. – user3773337

+0

Ok ho provato su kitkat e funziona bene. Sto vedendo questo problema SOLO su dispositivi lecca-lecca. @ Alessandroholic funziona per te sul lecca lecca? – user3773337

+0

Ho modificato la mia risposta per includere il codice appena testato sul lecca-lecca e funziona perfettamente. Inoltre, rimuovere requestId. un valore pari a 0 al posto di requestId nell'intento in sospeso dovrebbe essere sufficiente. Prova il codice sopra. – androholic

2

provare ad aggiungere Intent.FLAG_ACTIVITY_CLEAR_TASK bandiera nell'intento

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); 

questo sembra risolvere il mio problema