Wenn Sie in einer beliebigen Aktivität navigieren müssen, sollte eine Bindung mit Notification class(NotificationCompat.Builder)
vorliegen, die in der Implementierung fehlt.
Below Linie ist sehr wichtig, jede Aktivität zu umleiten:
NotificationCompat.Builder builder = new **NotificationCompat.Builder(this); builder.setContentIntent(resultPendingIntent);**
Hier resultPendingIntent
wird verwendet für den Backstack für die Aktivität zu enthalten, mit den Mitteilungen nach unten:
// Ruft einen PendingIntent das enthält gesamte Rückseite Stapel PendingIntent
resultPendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
Der komplette Code-Schnipsel ist here verfügbar.
int id = 1;
Intent resultIntent = new Intent(this, ResultActivity.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
// Adds the back stack
stackBuilder.addParentStack(ResultActivity.class);
// Adds the Intent to the top of the stack
stackBuilder.addNextIntent(resultIntent);
// Gets a PendingIntent containing the entire back stack
PendingIntent resultPendingIntent =
stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
builder.setContentIntent(resultPendingIntent);
NotificationManager mNotificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(id, builder.build());
Edit:
- Lassen Sie mich erklären, wie es funktioniert wird
Angenommen, Sie Antwort vom Server wie unten
{ "registration_ids" gesetzt werden: [ "XXX ", ...], " Daten ": { " id_offer ":" 41 " }, "Benachrichtigung": { "title": "Das ist der Titel", "text": "Hallo, ich bin eine Benachrichtigung", "Symbol": "ic_push", "click_action": "ACTIVITY_XPTO" }}
und in Ihrer Manifest-Datei
<activity android:name=".ActivityXPTO" android:screenOrientation="sensor" android:windowSoftInputMode="stateHidden"> <intent-filter> <action android:name="ACTIVITY_XPTO" />
<category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity>
Wenn die App geschlossen ist oder im Hintergrund und der Benutzer klickt auf die Benachrichtigung öffnet es meine ActivityXPTO
, die 012 abrufenIch brauche nur zu tun: wie unten durch Datennutzlast
public class ActivityXPTO extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
String idOffer = "";
Intent startingIntent = getIntent();
if (startingIntent != null) {
idOffer = startingIntent.getStringExtra("id_offer");
// Retrieve the id
}
getOfferDetails(id_offer);
}
}
}
Und in Second Way
Senden-Taste und Schlüssel in MainActivity über getIntent() und rufen spezifische Aktivität oder Fragmente erhalten.
json1.put ("Titel", "Ihr Titel");
json1.put ("Körper", "Körperinhalt");
json1.put ("Nachricht", "Ihre Nachricht");
json1.put ("Bildschirm", "2"); // secondFragment ist die 2. Position in der Navigationsleiste
json.put ("Daten", json1);
Beispielprojekt unter GitHub.
Lesen Sie https://developer.android.com/training/notify-user/navigation.html – Raghunandan
@Raghunandan meine Frage ist anders, ich muss eine bestimmte Aktivität starten und das kann jede Aktivität in der App.so ich brauche um alle Attribute zu definieren, die im obigen Link für jede Aktivität angegeben sind und was ist, wenn ich ein Fragment laden muss? – chandra
Ich hätte Typ für jede Aktivität zu öffnen. Basierend darauf benutze ich einen Switch Case und navigiere zu dieser speziellen Aktivität. Das Fragment wird von einer Aktivität gehostet. Also müssen Sie ein Fragment in diesem Fall – Raghunandan