Ich versuche, eine bestimmte Aktivität zu öffnen, wenn der Benutzer mit einigen zusätzlichen Parametern auf die Benachrichtigung klickt, wenn sich die App im Hintergrund befindet. Ich benutze den click_action
und es funktioniert gut, die App öffnet die gewünschte Aktivität.
Jetzt muss der Server dieser Aktivität einen zusätzlichen Parameter, eine id
, übergeben, damit ich die gewünschten Details der Benachrichtigung anzeigen kann. Wie bei einer E-Mail-Anwendung werden beim Öffnen der Benachrichtigung die Details der angegebenen E-Mail geöffnet.
Wie kann ich das machen?
Ok, ich habe die Lösung gefunden.
Dies ist der Json, den ich vom Server an die App sende
{
"registration_ids": [
"XXX",
...
],
"data": {
"id_offer": "41"
},
"notification": {
"title": "This is the Title",
"text": "Hello I'm a notification",
"icon": "ic_Push",
"click_action": "ACTIVITY_XPTO"
}
}
Im AndroidManifest.xml
<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 ist und der Benutzer auf die Benachrichtigung klickt, wird mein ActivityXPTO geöffnet
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);
}
...
}
Das ist es...
Fügen Sie der Absicht, die Sie zum Starten von Activity verwenden, zusätzliche Informationen hinzu. In der Methode onCreate verwenden Sie getIntent (). Zum Beispiel:
Startaktivität:
Intent intent = new Intent(context, TargetActivity.class);
Bundle bundle = new Bundle();
bundle.putString("extraName", "extraValue");
intent.putExtras(bundle);
startActivity(intent);
In der Tätigkeit
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle bundle = getIntent().getExtras();
String value = bundle.getString("extraName");
....
}