[android] getIntent () Extras immer NULL


Answers

Schreiben Sie einfach diesen Code oberhalb Ihrer Resume () - Methode. Das ist alles was es braucht. Das erfrischt die Absicht - ich weiß es nicht wirklich, aber es funktioniert.

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    setIntent(intent);
}
Question

Ich habe eine einfache Android-App geschrieben, die eine benutzerdefinierte Benachrichtigung wie folgt anzeigt:

Context context = getApplicationContext();          
NotificationManager manager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
Notification notification = new Notification( R.drawable.icon, title, System.currentTimeMillis());  
Intent notificationIntent = new Intent( context,  this.getClass()); 
notificationIntent.putExtra("com.mysecure.lastpage", "SECURECODE"); 
PendingIntent pendingIntent = PendingIntent.getActivity( context , 0, notificationIntent, 0);               
notification.flags = notification.flags | Notification.FLAG_ONGOING_EVENT;
notification.contentView = new RemoteViews(context.getPackageName(), R.layout.notifypbar);
notification.contentIntent = pendingIntent;

notification.contentView.setTextViewText(R.id.notifypb_status_text, text);
notification.contentView.setProgressBar(R.id.notifypb_status_progress, 100, (int)(100*progress), false);

manager.notify(104, notification);

Dieser Codeabschnitt wird in meiner Anwendung NUR EINMAL genannt und zeigt eine Benachrichtigung mit einem Fortschrittsbalken (alle korrekt) an.

Wenn ein Benutzer nun auf diese Benachrichtigung klickt, verarbeitet meine Anwendung das onResume Ereignis.

public void onResume()
{
    super.onResume();
    // TODO: Extras è SEMPRE NULL!!! impossibile!
    Intent callingintent = getIntent(); 
    Bundle extras = callingintent.getExtras();

aber Extras ist immer NULL!

Ich habe jede Kombination aus:

notificationIntent.putExtra("com.mysecure.lastpage", "SECURECODE");

oder

Bundle extra = new Bundle();
extra.putString(key, value);
notificationIntent.putExtra(extra);

aber getIntent (). getExtras () gibt immer NULL zurück.




Da es scheint, dass Ihre Aktivität bereits ausgeführt wird, müssen Sie FLAG_UPDATE_CURRENT angeben, da andernfalls der Aufruf getIntent() den vorherigen Aufruf getIntent() . Siehe diese Antwort .




Related