2016-10-02 16 views
0

Ich verwende OneSignal Push-Benachrichtigungsdienst. Wenn ein Benutzer auf die Push-Benachrichtigung klickt, wird automatisch eine neue Aktivität namens "Main2Activity.java" geöffnet. Wenn der Benutzer auf die Benachrichtigung klickt, funktioniert der Code und öffnet eine neue Aktivität. Aber wenn ich eine andere Push-Benachrichtigung sende, wenn der Benutzer auf die Benachrichtigung klickt, öffnet die Anwendung zuerst die "MainActivity.java". Nur wenn der Benutzer auf den Previus-Button am Telefon klickt, öffnet sich der "MainActicity2.java". Das ist mein CodePush-Benachrichtigung Öffnen Sie eine neue Aktivität

import android.content.Intent; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.widget.Toast; 

import com.onesignal.OSNotificationAction; 
import com.onesignal.OSNotificationOpenResult; 
import com.onesignal.OneSignal; 

import org.json.JSONObject; 

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     OneSignal.startInit(this) 
       .setNotificationOpenedHandler(new ExampleNotificationOpenedHandler()) 
       .init(); 
    } 

    class ExampleNotificationOpenedHandler implements OneSignal.NotificationOpenedHandler { 
     // This fires when a notification is opened by tapping on it. 
     @Override 
     public void notificationOpened(OSNotificationOpenResult result) { 
      OSNotificationAction.ActionType actionType = result.action.type; 
      JSONObject data = result.notification.payload.additionalData; 
      String customKey; 

      if (data != null) { 
       customKey = data.optString("customkey", null); 
       if (customKey != null) { 
        Log.i("OneSignalExample", "customkey set with value: " + customKey); 
        Toast.makeText(MainActivity.this,"My Custom Key is:"+customKey,Toast.LENGTH_LONG).show(); 
        Intent intent = new Intent(getApplicationContext(), Main2Activity.class); 
         intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK); 

        startActivity(intent); 


       } 
      } 

     } 
    } 
} 

Vielen Dank!

Antwort

0

Beim Öffnen Aktivität von Benachrichtigung, die Sie dann einige Daten stellen die Benutzer von der Anmeldung kamen, ist zu identifizieren

Und wenn Benutzer drücken Zurück-Taste aus mainactivity2 dann überprüfen, Benutzer kam von der Kennzeichnungspflicht oder an jedem anderen Ort, wenn von der Anmeldung kam dann schließe die App.

Code unten in Ihrem menifest.xml hinzufügen

<activity .. 
     android:launchMode= "singleInstance" /> 
+0

Ok, aber das Problem ist, wenn der Benutzer auf die Benachrichtigung klicken sie geöffnet ist die MainActivity – Jack

+0

dann diese Zeile in Ihrer Manifest-Datei hinzufügen, android: launchMode = "singleTop" Theb Ihre App wird nicht öffnen mehrere Aktivität Instanz –

+0

Ich habe nicht verstanden, wie das mit dem Code zu tun. Kannst du mir bitte helfen? – Jack

Verwandte Themen