Как обработать исключение ActivityNotFoundException? - PullRequest
6 голосов
/ 06 декабря 2011

В моем приложении мне нужно использовать startActivity, чтобы просмотреть содержимое файла, или использовать приложение по умолчанию, чтобы открыть определенный файл, но иногда система Android может не установить нужное приложение.

Мой вопрос: как обработать это исключение? Я хочу тост, а не ФК ..

Любой совет? THX

Ответы [ 4 ]

13 голосов
/ 06 декабря 2011

Просто добавьте это действие в файл манифеста ..

нравится,

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

EDIT:

Теперь, чтобы поймать ActivityNOtFoundException, введите свой код,

try {

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

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

Примечание: будьте осторожны, когда поймаете это ActivityNotFound Исключение, но вы не можете изменить файл манифеста для времени выполнения, то есть, если вы столкнулись с исключением и если вы хотите добавить этот тег активности во время выполнения, то ты не можешь.

11 голосов
/ 09 декабря 2015

Вы можете использовать resolveActivity метод

    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }else {
        Toast.makeText(this,"No suitable app found!",Toast.LENGTH_SHORT).show();
    }
2 голосов
/ 06 декабря 2011

Я думаю, что ваш вопрос больше: «Как я могу поймать определенное исключение и предотвратить сбой силы». Вот как вы делаете это в коде:

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?
}

Предупреждение, не злоупотребляйте этим: опасно «молча глотать» исключения и может привести к нестабильной работе вашего приложения и появлению странного и трудного для отладки поведения.

1 голос
/ 06 декабря 2011

Если вы хотите отобразить ошибку как тост, то

try {
    startActivity(intent);

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

Ошибка возникает из-за действия, не упомянутого в файле манифеста.

<activity android:name=".yourActivity"
      android:label="@string/app_name">
</activity>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...