Inhalt konvertieren: // URI in tatsächlichen Pfad in Android 4.4

Ich habe eine Lösung ausprobiert (siehe unten), die einwandfrei funktioniert, außer in Android 4.4 den Anruf zu tätigenstartActivityForResult() Ruft eine Aktivität mit dem Titel "Öffnen von" auf, die "Neueste", "Bilder", "Downloads" sowie mehrere Apps zur Auswahl enthält. Wenn ich "Bilder" wähle und versuche, den zurückgegebenen Inhalts-URI (unter Verwendung des folgenden Codes) aufzulösen, rufe ich aufcursor.getString() gibt null zurück. Wenn ich mit der Galerie-App genau dieselbe Datei auswähle,cursor.getString() gibt einen Dateipfad zurück. Ich habe dies nur in den API-Leveln 16 und 19 getestet. In 16 funktioniert alles wie erwartet. In 19 muss ich die Galerie oder eine andere App auswählen, sonst funktioniert es nicht.

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

Antworten auf die Frage(7)

Ihre Antwort auf die Frage