0

Hallo ich eine Benachrichtigung Absicht erstellt haben sich wie folgtAndroid GCM Benachrichtigung Umleitungen nicht zu intented Aktivität, wenn App im Hintergrund ist

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); 
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 

Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this) 
     .setSmallIcon(getNotificationIcon()) 
     .setContentTitle(title) 
     .setContentText(text) 
     .setAutoCancel(true) 
     .setSound(defaultSoundUri) 
     .setContentIntent(pendingIntent); 


int notification_id = (int) System.currentTimeMillis(); 
notificationManager.notify(notification_id, notificationBuilder.build()); 

Alles funktioniert perfekt, wenn die App geschlossen ist. Wenn die App jedoch im Hintergrund ausgeführt wird, wird die zuletzt geöffnete Aktivität vom Hintergrund in den Vordergrund verschoben. Ich möchte auf die genaue Seite in den Daten erhalten gehen. Jemand Hilfe, habe ich viele Kombinationen von FLAGS versucht.

+0

versuchen Sie diese intent.setFlags (Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); –

+1

Fügen Sie Ihren Manifest-Code für Aktivität, die Sie bei Benachrichtigung starten möchten, hinzu. –

+0

Bitte senden Sie Ihr Manifest –

Antwort

0

AS @rahul wenn Sie PendingIntent.FLAG_UPDATE_CURRENT hingewiesen Intent.FLAG_NEW_ACTIVITY_TASK funktioniert es ändern, wie ich erforderlich, aber ein Problem, das ich gegründet ist, dass Wenn Sie mehrere Benachrichtigungen in der Benachrichtigungsleiste haben, funktioniert nur eine Aktion. Wenn Sie auf die verbleibenden tippen, wird es nur von dort gelöscht, keine Aktionen werden funktionieren. Folgendes ist die richtige Lösung:

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 
Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this) 
         .setSmallIcon(getNotificationIcon()) 
         .setContentTitle(title) 
         .setContentText(text) 
         .setAutoCancel(true) 
         .setSound(defaultSoundUri) 
         .setContentIntent(pendingIntent); 
+2

Der Aufruf von 'setFlags()' zweimal wie dies überschreibt die Flags beim zweiten Aufruf. Sie werden nur mit dem Satz "FLAG_ACTIVITY_NEW_TASK" enden, was nicht Ihren Vorstellungen entspricht. Entweder 'addFlags()' anstelle von 'setFlags()' benutzen oder beide Flags in das Argument von 'setFlags()' setzen, so: 'setFlags (Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK) ' –

0

Statt diesen

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); 

Versuchen Sie dies in Ihrer Absicht

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); 

FLAG_ACTIVITY_SINGLE_TOP Wenn dieser Flag gesetzt ist, wird die Aktivität nicht gestartet werden, wenn er bereits an der Spitze läuft des Geschichtsstapels.

+0

Funktioniert nicht..durch Setzen der oben genannten Flags wird die aktuell geöffnete Aktivität angezeigt. Was ich will, ist Anruf onCreate jedes Mal, wenn ich auf Benachrichtigung tippen, ob app im Hintergrund oder foreground.l ist –

+0

Haben Sie hinzugefügt Android: exportierte = "wahr" in Ihrem Android-Manifest innerhalb Aktivitäts-Tag, die nach dem Tippen geöffnet werden soll Benachrichtigung ? – Anurag

3

Nur eine Arbeit um versuchen, diese

PendingIntent.getActivity(context, 0, notificationIntent, Intent.FLAG_ACTIVITY_NEW_TASK); 

statt

PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 
+0

gearbeitet. Aber Studio show warning in der Zeile 'Muss an oder mehr sein von: PendingIntent .......' –

+0

Sie sollten PendingIntent.FLAG_ONE_SHOT an der Stelle von Intent.FLAG_ACTIVITY_NEW_TASK übergeben, da dieses Intent-Flag nicht für die PendingIntent.getActivity-Methode empfohlen wird . –

+1

Die Übergabe von 'Intent.FLAG_ACTIVITY _...' an einen Aufruf von 'PendingIntent.getActivity()' ist falsch. Dieser Aufruf akzeptiert 'PendingIntent'-Flags, nicht' Intent'-Flags. –

0

Flag hinzufügen, um vorhandene Aufgaben zu löschen und neue Aufgabe zu starten.

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); 
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0); 
+0

' FLAG_ACTIVITY_CLEAR_TOP' ist irrelevant und redundant, wenn Sie 'FLAG_ACTIVITY_CLEAR_TASK' angeben –

0

Wenn Sie Intent.FLAG_ACTIVITY_CLEAR_TASK verwenden möchten müssen Sie auchIntent.FLAG_ACTIVITY_NEW_TASK verwenden. Das sagt es sogar in der Dokumentation.

Verwandte Themen