![]() |
Delphi-Version: 11 Alexandria
Android: Dateiname String nach JNET_URI konvertieren
Für den Dateizugriff ab Android 11 habe ich folgende Seite mit Delphi Code gefunden.
![]() Der Quellcode findet sich hier: ![]() Damit bekomme ich Zugriff auf die Dateien. Mein Problem ist nur, dass ich den Wert als JNET_URI erhalte. Ich kann zwar den Pfad, wie z.B. content://com.android.externalstorage.documents/document:3830-6335%3ADocuments%2FmeineDatei.ext auslesen und als String speichern, aber wie kann ich beim nächsten Start der App wieder auf diese Datei zugreifen, um z.B. den Dateinamen anzuzeigen und den Zugriff darauf zu bekommen? Also ich habe es so versucht, komme aber leider nicht weiter:
Delphi-Quellcode:
var
fileuri: JNet_Uri; //... strExtFilename := 'content://com.android.externalstorage.documents/document:3830-6335%3ADocuments%2FmeineDatei.ext'; // wird normalerweise aus einer ini gelesen if (strExtFilename.StartsWith('content://')) then begin fileuri := TAndroidHelper.StrToJURI(strExtFilename); strFilenameDisplay := GetFilename_FromUri(fileUri); end;
Delphi-Quellcode:
Leider stürzt die App dabei ab, da vermutlich die fileuri nicht komplett ist. Ich weiß aber nicht, wie man die Datei parsen lassen kann, ohne das der Anwender sie neu über das Storage Access Network auswählen muss.
function GetFilename_FromUri(Uri: JNet_Uri): string;
var C: JCursor; begin result := ''; try C := TAndroidHelper.Activity.getContentResolver.query(Uri, nil, nil, nil, nil, nil); if (C = nil) then exit; C.moveToFirst; result := JStringToString(C.getString(C.getColumnIndex(TJOpenableColumns.JavaClass.DISPLAY_NAME))); finally C.close; end; end; Ich hoffe, jemand kann mir dabei helfen. |
AW: Android: Dateiname String nach JNET_URI konvertieren
Bitte schön:
Delphi-Quellcode:
var fileuri: JNet_Uri;
TheFile: JFile; Intent: JIntent; begin TheFile:=TJFile.JavaClass.init(StringToJString(filepath), StringToJString(filename)); //Output: JStringToString(TheFile.getAbsolutePath())); fileuri:=TAndroidhelper.JFileToJURI(TheFile); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz