Obter caminho de arquivo e nome de arquivo da imagem da galeria selecionada no Android
Estou criando um aplicativo que faz o upload de uma imagem selecionada da galeria e a envia para um serviço da web. O webservice requer o nome do arquivo da imagem selecionada mais uma codificação base64 do conteúdo do arquivo. Consegui conseguir isso com um caminho de arquivo codificado. No entanto, estou lutando para obter o verdadeiro caminho da imagem. Eu li na web e tenho esse código, mas não funciona para mim:
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
Uri selectedImageUri = data.getData();
String[] projection = {MediaStore.Images.Media.DATA};
try {
Cursor cursor = getContentResolver().query(selectedImageUri, projection, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(projection[0]);
String picturePath = cursor.getString(columnIndex);
cursor.close();
Log.d("Picture Path", picturePath);
}
catch(Exception e) {
Log.e("Path Error", e.toString());
}
}
}
Eu recebo este erro:
java.lang.NullPointerException
EDITAR
Esqueci de mencionar que estou usando Kitkat. Parece que meu problema é relacionado ao KitKat. Eu encontrei isso (veja abaixo) que me ajudou a colocar meu aplicativo em funcionamento:
Galeria do Android no KitKat retorna Uri diferente para Intent.ACTION_GET_CONTENT