Notification service setzen extra auf die Benachrichtigung klicken, wie?
Gut ich habe einen Dienst mit einer Meldung, ich soll einen zusätzlichen mit dem neuen Vorsatz geöffnet, wenn der Benutzer auf die Benachrichtigung, so dass, wenn MainActivity
öffnet bekomme ich das extra. Ich habe versucht, mit verschiedenen Möglichkeiten, aber ich weiß einfach nicht herausfinden, wie es funktioniert.
Hier ist was ich versucht habe:
Dies ist MyService
Intent intent = new Intent(MyService.this, MainActivity.class);
intent.putExtra("EXTRA", StringTEST);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent contentIntent = PendingIntent
.getActivity(getApplicationContext(),
0, intent, 0);
dieser öffnet die Aktivität in Ordnung, aber ich kann nicht Holen Sie sich die extra?? Dies ist, wie ich versucht habe, um es zu bekommen:
MainActivity
@Override
public void onNewIntent(Intent intent){
Bundle extras = intent.getExtras();
if(extras != null){
String name = extras.getString("EXTRA");
System.out.println(name);
}
}
@Override
protected void onResume() {
Bundle extras = getIntent().getExtras();
System.out.println(extras+"");
if (extras != null) {
try {
onNewIntent(getIntent());
Intent i = getIntent();
String name = i.getStringExtra("EXTRA");
System.out.println(name);
currentDir = new File(name);
changeFiles();
} catch (Exception e) {
e.printStackTrace();
}
}
super.onResume();
}
Das sind die zwei Möglichkeiten, die ich habe versucht, aber ich bekomme immer noch null... Was mache ich falsch?
Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich vermute, dass dein problem hier:
Übergeben Sie
intent
zugetActivity()
und erwarten, dass Sie wieder einePendingIntent
passtIntent
und beinhaltet extras. Leider, wenn es bereits einePendingIntent
im Umlauf in das system passtIntent
(ohne unter Berücksichtigung IhrerIntent
extras), danngetActivity()
zurück, dassPendingIntent
statt.Um zu sehen, ob dies das problem ist, versuchen Sie dies:
Dieser sagt, dass, wenn es schon ein
PendingIntent
passtIntent
irgendwo in dem system, das es ersetzen soll, mit extras, die in Ihremintent
parameter.static String
ich weiß ist nicht der beste Weg, aber...PendingIntent
ist einzigartig. Sie können tun, dass durch die Verwendung einer eindeutigenrequestCode
in jeder AufrufPendingIntent.getActivity()
oder Sie können eine einzigartige AKTION auf jedenPendingIntent
.Ich hatte das gleiche problem. Sie verwendet
getIntent().getExtras()
aber Sie sollten verwendet werdengetIntent().getStringExtra(id)
.Es ist hier auch erwähnt: Android: Absicht.putExtra in einer Service-Klasse, um Meldungen
Sich auch es als nicht eine gute Praxis, um die Verwendung von statischen Variablen, wie Sie erwähnt haben in Ihrem Kommentar, ich würde vorschlagen, es zu vermeiden.