Android 11<= разрешение активности

Я работаю над улучшением функциональности приложения для Android. Есть возможность сделать фото из приложения. А для андорид 11<=

takePictureIntent.resolveActivity(getPackageManager())

возвращает ноль. Я знаю, что это из-за более высокой версии Android. Но когда я удалил оператор if, все заработало, поэтому мне интересно, почему эта строка была там и что может случиться, если ее удалить.

      private void dispatchTakePictureIntent() {
    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
   //if (true) {
        File photoFile = createImageFile();

        if (photoFile != null) {
            takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile));
            startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO);
        }
    }
}

1 ответ

Если соответствующей активности нет, вызов должен завершиться с ошибкой. ActivityNotFoundException.

Обертывание startActivityForResult()позвонить в try/ catchработает для всех версий Android.

Другие вопросы по тегам