O data.getData () do Android retorna nulo de CameraActivity para alguns telefones
Ocorreu um erro fatal no meu onActivityResult ao retornar de uma atividade da câmera. O que me fez coçar a cabeça é que o erro está acontecendo apenas em alguns telefones (com base no número de usuários afetados), enquanto parece que não há nada errado para a maioria. Posso duplicar o erro no meu Nexus 6 (executando o Lollipop 5.1.1) enquanto a minha nota 5 (também 5.1.1) não apresenta problemas.
O problema é quando estou tentando atribuir o imageUri a partir de data.getData (). Depurando na Nota 5, data.mData é igual a "conteúdo: // media / external / images / media / 2215" enquanto no Nexus 6, data.mData é nulo.
Sei que essa é uma pergunta comum feita no SO, mas não encontrei nada que me ajudou até agora. Alguém pode me indicar a solução para isso e fornecer uma resposta?
Método Iniciando a atividade da câmera para obter resultado
@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();
}
}
Agradeço imensamente qualquer ajuda neste!