Я создаю приложение, которое загружает выбранное изображение из галереи и загружает его в веб-службу. Для веб-сервиса требуется имя файла выбранного изображения плюс кодировка base64 содержимого файла. Мне удалось добиться этого с помощью жестко заданного пути к файлу. Тем не менее, я изо всех сил пытаюсь получить реальный путь к файлу изображения. Я читал по сети и имел этот код, но для меня это не работает:
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());
}
}
}
Я получаю эту ошибку:
java.lang.NullPointerException
ИЗМЕНИТЬ
Забыл упомянуть, что я использую Kitkat. Похоже, моя проблема связана с KitKat. Я нашел это (см. Ниже), что помогло мне заставить мое приложение работать:
Галерея Android на KitKat возвращает разные Uri для Intent.ACTION_GET_CONTENT