2017-10-28 5 views
0

Ich arbeite an einer Funktion, mit der ich Benachrichtigungen für POI (Points of Interest) erhalte, während der Nutzer durch die Google Navigation App navigiert (Hintergrunddienst für Standortaktualisierung).Bei Benachrichtigung Klicken Sie auf "Meine App" im Hintergrund

Szenario

1) Der Nutzer klickt navigieren Taste aus meiner app

2) Er genommen wird Google Navigation mit Daten

3) Nun erhält Benutzer Notification für POI zu navigieren, dann er klickt darauf und er wird zu meiner app gebracht (meine App in den Vordergrund gebracht, immer noch Google Navigation i im Hintergrund)

4) Jetzt sieht der User meine App, jetzt klickt er die gleiche Meldung, in diesem Fall muss ich meine App in den Hintergrund gestellt, so jetzt, dass die Nutzung von Google Navigation sieht

was ich versuchte

bringen meine App Vordergrund erreicht wird, aber meine App in den Hintergrund setzen auf Benachrichtigungsklick wird nicht erreicht.

moveTaskToBack (true) das ist, was ich über kam, aber wie kann ich das Klick in Mitteilung

Code

Intent intent = new Intent(); 
     intent.setComponent(new ComponentName(getPackageName(), B_Activity.class.getName())); 
     intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
     intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 
     intent.putExtra("toFront", toFront); 
     PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 
implementieren
+0

** moveTaskToBack (boolesch bool) ** ist eine Methode der Activity-Klasse. Sie können es also nur mit Aktivitätsreferenz aufrufen. Ich denke nicht, dass es einen Weg gibt, es mit Absicht zu tun. Was Sie tun können Rufen Sie eine Aktivität in der Benachrichtigungsabsicht auf und bestätigen Sie dann die Absicht in der Aktivität, wenn sie im Vordergrund ist. – ADM

+0

moveTaskToBack (true) geben Erfahrung beim Drücken der Home-Taste. d. h., alle Apps werden im Hintergrund angezeigt. Ich möchte nur meine App in bg, so dass Benutzer Navigation App sehen –

+0

Ich glaube nicht, moveTaskToBack (true) Erfahrung mit Drücken der Home-Taste für alle Anwendungen geben. Ich habe es gerade getestet. Es funktioniert nur für die aufrufende App. – ADM

Antwort

1

moveTaskToBack (boolean bool) ist ein Verfahren, Der Aktivitätsklasse Sie können es also nur mit Aktivitätsreferenz aufrufen. Ich denke nicht, dass es einen Weg gibt, es mit Absicht zu tun. Was Sie tun können, senden Sie einen Broadcast in Benachrichtigungsabsicht und validieren dann die Absicht in Aktivität, wenn sie im Vordergrund ist -> movetaskBack() aufrufen.

Wenn Ihre B_Activity keine Ui hat. Dann setze einfach die Null-Komponente in Pending Intent. Verwenden Sie Local Broadcast, um Ihre aktuell ausgeführte Aktivität zum Aufrufen von moveTaskToBack() zu benachrichtigen.

Intent intent = new Intent(); 
intent.setAction("com.settaskback");//Your custom action goes here 
LocalBroadcastManager.getInstance(this).sendBroadcast(intent); 

Dann senden Broadcast bei Benachrichtigung klicken. Die Aktivität, die diese Sendung erhalten wird Aufgabe in den Hintergrund setzen (nur, wenn seine in forground)

final Intent broadcastIntent = new Intent("com.settaskback"); 
     PendingIntent intent = PendingIntent.getBroadcast(getApplicationContext(), 0, broadcastIntent, PendingIntent.FLAG_UPDATE_CURRENT); 
     notificationBuilder.setContentIntent(intent); 
     notification = notificationBuilder.build(); 
     notification.flags |= Notification.FLAG_AUTO_CANCEL; 
     NotificationManager mNotificationManager = 
       (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
     mNotificationManager.notify(1, notification); 

Sie benötigen einen lokalen Rundfunkempfänger für diese Aktion in Aktivität zu registrieren.

@Override 
    public void onReceive(Context context, Intent intent) { 
      if(somecondition){ 
       moveTaskToBack(true); 
      } 
    } 
+0

Ihre Idee der Erstellung PendingIntent Broadcast heped mich .. Danke. Antwort akzeptiert :) –

Verwandte Themen