7 Stimmen

Wie behandelt man die ActivityNotFoundException?

In meiner App muss ich startActivity verwenden, um den Inhalt der Datei zu sehen, oder die Standardanwendung verwenden, um die bestimmte Datei zu öffnen, aber manchmal kann das Android-System nicht die Anwendung installieren, die benötigt wird.

Meine Frage ist, wie diese Ausnahme zu behandeln ist. Ich möchte einen Toast, nicht FC

Irgendein Rat? THX

15voto

user370305 Punkte 106676

Fügen Sie diese Aktivität einfach in Ihre Manifestdatei ein

mögen,

<activity android:name=".ActivityName"
                  android:label="@string/app_name">
        </activity>

EDITです:

Jetzt zum Fang der ActivityNOtFoundException geben Sie Ihren Code ein,

try {

  // Your startActivity code wich throws exception  
} catch (ActivityNotFoundException activityNotFound) {

    // Now, You can catch the exception here and do what you want
}

Hinweis: Seien Sie vorsichtig, wenn Sie diese ActivityNotFound Ausnahme, aber Sie können nicht Manifest-Datei zur Laufzeit geändert, bedeutet, sobald Sie die Ausnahme aufgetreten ist und wenn Sie hinzufügen möchten, dass diese Aktivität Tag zur Laufzeit dann können Sie nicht.

13voto

Ehsan Heidari Punkte 426

Android 11 Update:

Wenn Sie SDK Version 30 oder höher verwenden, sollten Sie nicht resolveActivity mehr aufgrund von neue Regeln für die Sichtbarkeit von Paketen . Sie sollten stattdessen einfach die in der akzeptierten Antwort erwähnte try/catch-Lösung verwenden. Für weitere Informationen lesen Sie bitte die Die Antwort von CommonsWare

Alte Antwort: (veraltet)

Sie können verwenden resolveActivity Methode

    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }else {
        Toast.makeText(this,"No suitable app found!",Toast.LENGTH_SHORT).show();
    }

2voto

Guillaume Punkte 22444

Ich denke, Ihre Frage ist eher: "Wie kann ich eine bestimmte Ausnahme abfangen und einen Absturz verhindern". So machen Sie es im Code:

try {
    // here is your code that can potentially throw the exception and the force crash
} catch (ActivityNotFoundException activityNotFound) {
    Toast.makeText(this, "your error message", Toast.LENGTH_SHORT).show();
    // maybe also log the exception, for future debugging?
}

Eine Warnung: Es ist gefährlich, Ausnahmen "stillschweigend zu schlucken" und kann Ihre Anwendung instabil machen und ein seltsames und schwer zu debuggendes Verhalten einführen.

1voto

droid kid Punkte 7559

Wenn Sie den Fehler als Toast anzeigen wollen, dann

try {
    startActivity(intent);

} catch (ActivityNotFoundException e) {
    // TODO: handle exception
    //Show Toast...
}

Der Fehler tritt auf, weil die Aktivität nicht in der Manifestdatei aufgeführt ist.

<activity android:name=".yourActivity"
      android:label="@string/app_name">
</activity>

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