Uzyskaj ścieżkę do pliku i nazwę wybranego obrazu galerii w Androidzie

Tworzę aplikację, która przesyła wybrany obraz z galerii i przesyła go do usługi internetowej. Usługa sieciowa wymaga nazwy pliku wybranego obrazu oraz kodowania zawartości pliku base64. Udało mi się to osiągnąć dzięki zakodowanej ścieżce pliku. Jednak staram się uzyskać prawdziwą ścieżkę obrazu. Przeczytałem w internecie i mam ten kod, ale to nie działa dla mnie:

 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());
     }
   }
 }

Dostaję ten błąd:

java.lang.NullPointerException

EDYTOWAĆ

Zapomniałem wspomnieć, że używam Kitkat. Wygląda na to, że mój problem jest związany z KitKat. Znalazłem to (patrz poniżej), które pomogło mi uruchomić moją aplikację:

Galeria Android na KitKat zwraca różne Uri dla Intent.ACTION_GET_CONTENT

questionAnswers(9)

yourAnswerToTheQuestion