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.