Seleccionar imagen de la galería no funciona en Redmi Note 4

He visto un par de otras preguntas sobre S / O relacionadas con esto, pero la que estaba más cerca de mi problema no parece haber recibido muchas respuestas (El dispositivo Xiaomi MI no selecciona la imagen de la Galería) Esperando que esta pregunta tenga mejor suerte.

Estoy tratando de seleccionar una imagen de la galería del teléfono y pasar la ruta de la imagen a otra actividad donde se obtiene una vista previa para el usuario.

He probado esto en otros dos dispositivos (¿Moto E y algo llamado Coolpad?) Y ambos parecen estar funcionando bien.

(La depuración del código fuente de Android no parece ser una opción práctica).

En la actividad principal, en un desencadenador de UI, inicio el selector de galería con el siguiente código:

private void dispatchPickPictureIntent() {
        Intent pickPictureIntent = new Intent(Intent.ACTION_PICK);
        pickPictureIntent.setType("image/*");
        startActivityForResult(pickPictureIntent, REQUEST_IMAGE_PICK);
    }

Manejo el resultado así:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_IMAGE_PICK && resultCode == RESULT_OK) {
        Uri selectedImage = data.getData();
        mCurrentPhotoPath = getRealPathFromURI(this, selectedImage);
        launchUploadActivity();
    }
}

private String getRealPathFromURI(Context context, Uri uri) {
    Cursor cursor = null;
    try {
        String [] proj = {MediaStore.Images.Media.DATA};
        cursor = context.getContentResolver().query(uri, proj, null, null, null);
        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
        return cursor.getString(column_index);
    } finally {
        if (cursor != null)
            cursor.close();
    }
}

Una vez que tengo la ruta del archivo almacenada en la variable globalmCurrentPhotoPath se llama al siguiente método:

private void launchUploadActivity() {
    Intent intent = new Intent(HomeActivity.this, UploadActivity.class);
    intent.putExtra(getString(R.string.photo_path), mCurrentPhotoPath);
    startActivityForResult(intent, REQUEST_IMAGE_UPLOAD);
}

Incluso en el Redmi, hasta aquí, las cosas funcionan sin problemas. En el método onCreate de UploadActivity, recibo la cadena de ruta del archivo de imagen con éxito.

Pero, entonces, trato de obtener una vista previa de la imagen:

private void previewPhoto() {
    imageView.setVisibility(View.VISIBLE);
    BitmapFactory.Options options = new BitmapFactory.Options();

    // Avoid OutOfMemory Exception
    options.inSampleSize = 8;

    // This line returns a null, only on the Xiaomi device
    final Bitmap bitmap = BitmapFactory.decodeFile(photopath, options);

    imageView.setImageBitmap(bitmap);
}

Ahora he intentado depurar este problema, pero una vez que entro en el código fuente de BitmapFactory, me encuentro con un problema aparentemente no resuelto con Android Studio (https://stackoverflow.com/a/40566459/3438497) lo que lo hace inútil.

Cualquier sugerencia sobre cómo puedo proceder desde aquí sería muy apreciada.

Respuestas a la pregunta(2)

Su respuesta a la pregunta