Konwertuj zawartość: // URI na aktualną ścieżkę w systemie Android 4.4

Próbowałem rozwiązania (patrz poniżej), które działa dobrze, z wyjątkiem wywołania Android 4.4startActivityForResult() wywołuje działanie „Otwórz z”, które zawiera „Najnowsze”, „Obrazy”, „Pliki do pobrania” oraz kilka aplikacji do wyboru. Kiedy wybieram „Obrazy” i próbuję rozwiązać zwrócony URI treści (używając poniższego kodu), wywołanie docursor.getString() zwraca wartość null. Jeśli wybiorę dokładnie ten sam plik przy użyciu aplikacji Galeria,cursor.getString() zwraca ścieżkę do pliku. Przetestowałem to tylko na poziomie 16 i 19. Wszystko działa zgodnie z oczekiwaniami w 16. Jeśli chodzi o 19, muszę wybrać Galerię lub inną aplikację lub nie działa.

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

questionAnswers(7)

yourAnswerToTheQuestion