Convertir contenido: // URI a la ruta real en Android 4.4

Probé una solución (ver más abajo) que funciona bien, excepto en Android 4.4, la llamada astartActivityForResult() abre una actividad titulada "Abrir desde", que tiene "Recientes", "Imágenes", "Descargas", así como varias aplicaciones para elegir. Cuando elijo "Imágenes" e intento resolver el URI de contenido devuelto (usando el código a continuación), la llamada acursor.getString() devuelve nulo. Si elijo exactamente el mismo archivo usando la aplicación Galería,cursor.getString() devuelve una ruta de archivo. Solo lo he probado en los niveles de API 16 y 19. Todo funciona como se espera en 16. Hasta 19, tengo que elegir la Galería u otra aplicación o no funciona.

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

        return path;
    } finally {
        if (cursor != null) {
            cursor.close();
        }
    }
}

Respuestas a la pregunta(7)

Su respuesta a la pregunta