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

questionAnswers(9)

yourAnswerToTheQuestion