Android data.getData () возвращает null из CameraActivity для некоторых телефонов

У меня есть фатальная ошибка, возникающая в моем onActivityResult, возвращающемся из активности камеры. То, что я почесываю голову, состоит в том, что ошибка происходит только на нескольких телефонах (в зависимости от количества затронутых пользователей), хотя для большинства нет ничего плохого. Я могу дублировать ошибку на моем Nexus 6 (работает Lollipop 5.1.1), в то время как моя заметка 5 (также 5.1.1) не имеет проблем вообще.

Проблема в том, что я пытаюсь назначить imageUri из data.getData (). Отладка в примечании 5, data.mData равна «content: // media / external / images / media / 2215», а на Nexus 6 data.mData – null.

Я знаю, что это общий вопрос, заданный на SO, но я не нашел ничего, что помогло мне до сих пор. Может ли кто-нибудь указать мне на решение этого вопроса и дать ответ?

Метод Запуск действия камеры для результата

@OnClick(R.id.change_image_camera) public void takePicture(){ Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);} 

onActvityResult

 @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == Activity.RESULT_OK) { Uri imageUri = data.getData(); //The trouble is here String realPath = Image.getPath(this, imageUri); //getPath crashes because imageUri is null Image.compressImage(realPath); File file = new File(realPath); Bundle extra = new Bundle(); extra.putString("URL", realPath); returnIntent.putExtras(extra); setResult(RESULT_OK, returnIntent); finish(); } } за @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == Activity.RESULT_OK) { Uri imageUri = data.getData(); //The trouble is here String realPath = Image.getPath(this, imageUri); //getPath crashes because imageUri is null Image.compressImage(realPath); File file = new File(realPath); Bundle extra = new Bundle(); extra.putString("URL", realPath); returnIntent.putExtras(extra); setResult(RESULT_OK, returnIntent); finish(); } } 

Я очень ценю любую помощь в этом!

 Uri imageUri = data.getData(); //The trouble is here 

Не требуется, чтобы приложение камеры возвращало Uri указывающее на фотографию, поскольку это не является частью протокола ACTION_IMAGE_CAPTURE Intent . Или:

  • EXTRA_OUTPUT в свой ACTION_IMAGE_CAPTURE Intent , и в этом случае вы знаете, где должно храниться изображение, и не нужно полагаться на getData() или

  • Используйте дополнительные data в ответном Intent , который будет Bitmap изображением миниатюры изображения

Ваша следующая ошибка здесь:

 String realPath = Image.getPath(this, imageUri); 

Нет требования, чтобы изображение сохранялось как файл, к которому вы можете получить доступ, если только вы не EXTRA_OUTPUT путь к этому местоположению через EXTRA_OUTPUT .

Intereting Posts