A imagem de seleção do Android da galeria não está funcionando (Android 6.0 e Android 5.1.1)

Estou usando o código abaixo para escolher um arquivo de imagem da galeria de dispositivos:

Primeiro eu chamo esse pedaço de código:

Intent i = new Intent();
i.setType("image/*");
i.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(i, "Select Picture"), RESULT_LOAD_IMAGE);

Este é meuonActivityResult método:

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) {

            photoPath  = getPath(data.getData());
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            FileInputStream fis;
            try {
                fis = new FileInputStream(new File(photoPath));
                byte[] buf = new byte[1024];
                int n;
                while (-1 != (n = fis.read(buf))) {
                    baos.write(buf, 0, n);
                }

                img.setImageBitmap(BitmapFactory.decodeFile(photoPath));

            } catch (Exception e) {
                e.printStackTrace();
            }

        }
    }

E este é um método auxiliar para recuperar o caminho da imagem:

private String getPath(Uri uri) {

        String[]  data = { MediaStore.Images.Media.DATA };
        CursorLoader loader = new CursorLoader(getApplicationContext(), uri, data, null, null, null);
        Cursor cursor = loader.loadInBackground();
        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
        return cursor.getString(column_index);
    }

Meu problema é que o aplicativo é estranho. No meu emulador 6.0, às vezes funciona e às vezes não. Em outro dispositivo (Android 5.1.1), umFileNotFound Exception é jogado nesta linha

fis = new FileInputStream(new File(photoPath));

Todas as permissões necessárias estão bem. Vocês têm alguma idéia do que está acontecendo aqui? Ou você tem alguma sugestão melhor sobre o que usar para escolher uma imagem da galeria?

questionAnswers(3)

yourAnswerToTheQuestion