26 Stimmen

Android PendingIntent führt Sie zu einer bereits bestehenden Aktivität?

Ich war mir nicht ganz sicher, wie ich danach suchen sollte...

Ich habe folgendes Programm, das immer dann aufgerufen wird, wenn ein Auftrag hinzugefügt oder aus der Warteschlange entfernt wird, um eine Benachrichtigung in der Statusleiste anzuzeigen:

private void showNotification()
{
    int jobsize = mJobQueue.size();
    int icon = (jobsize == 0) ? 
        android.R.drawable.stat_sys_upload_done : 
        android.R.drawable.stat_sys_upload;
    Notification notification = 
        new Notification(icon, "Test", System.currentTimeMillis());
    Intent intent = new Intent(this, FileManagerActivity.class);
    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0);

    notification.flags = 
        (Notification.FLAG_SHOW_LIGHTS | Notification.FLAG_AUTO_CANCEL);
    notification.setLatestEventInfo(this, 
        "Uploading to our servers",
        getString((jobsize > 0) ? 
            R.string.notification_active_transfers : 
            R.string.notification_no_transfers),
        pendingIntent);

    mNotifyManager.notify(NOTIFICATION, notification);
}

So wie es jetzt ist, verhält es sich folgendermaßen:

  • wenn der Benutzer sich abmeldet und auf die Benachrichtigung drückt, wird immer noch eine neue FileManagerActivity (ops!) geöffnet. Ich könnte dies umgehen, indem ich bei meiner Authentifizierungsaktivität beginne und die Absicht in natürlicher Reihenfolge an meinen Stapel weitergebe, wenn die Anwendung bereits läuft, habe ich Schwierigkeiten.

  • wenn der Benutzer die FileManagerActivity bereits geöffnet hat, wird durch Anklicken der Benachrichtigung eine zweite Instanz darüber gelegt. In diesem Fall möchte ich, dass die derzeit laufende FileManagerActivity den Fokus erhält, anstatt eine neue Instanz zu starten.

Wie kann ich das richtige Verhalten erreichen?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X