Hallo,
irgendwie komme ich nicht weiter. Ich möchte ab Android 11 eine Datensicherung meiner App-Daten einlesen.
Der Nutzer gibt der App den Zugriff auf ein Verzeichnis, von dem ich die Liste der Dateinamen haben möchte, um sie dann einzeln ins App Verzeichnis kopieren zu können.
Delphi-Quellcode:
procedure GetFolderAccess(StartUri: JNet_Uri);
var
Intent: JIntent;
begin
Intent := TJIntent.Create;
Intent.setAction(TJIntent.JavaClass.ACTION_OPEN_DOCUMENT_TREE);
Intent.putExtra(TJDocumentsContract.JavaClass.EXTRA_INITIAL_URI, JParcelable(StartUri));
MainActivity.startActivityForResult(Intent, cDirectory_Tree_Ac);
end;
sowie
Delphi-Quellcode:
procedure TForm1.OnActivityResult(RequestCode, ResultCode: Integer; Data: JIntent);
var
docUri,
Uri: JNet_Uri;
TheFolder : JFile;
TheFFiles : TJavaObjectArray<JFile>;
i : integer;
begin
Memo1.Lines.Clear;
if ResultCode = TJActivity.JavaClass.RESULT_OK
then
begin
// Result data user selected
// contains a URI for the document or directory.
Uri :=
nil;
if Assigned(Data)
then
begin
if (Data =
nil)
then
begin
Memo1.Lines.Add('
Uri nicht abgerufen!');
exit;
end;
UriCan := Data.getData;
if RequestCode = cDirectory_Tree_Ac
then
begin
myToast('
Berechtigung zum Zugriff auf Elemente im Verzeichnis ' + JStringToString(UriCan.getPath
{ toString}) + '
erteilt.');
docUri := DocumentsContract.JavaClass.buildDocumentUriUsingTree(
Uri, DocumentsContract.JavaClass.getTreeDocumentId(
Uri));
memo1.Lines.Add(JStringToString(docUri.toString));
TheFolder := TJFile.JavaClass.init(docUri.toString);
TheFFiles := TheFolder.listFiles;
for i := 0
to TheFFiles.Length-1
do <<<=============================== hier steigt die App aus
memo1.Lines.Add(i.ToString);
//(TheFFiles.Items[i].toString));
end;
end;
end;
end;
In der Schleife steigt die App aus. Wie kann ich durch die gefundene Dateiliste gehen, um die einzelnen Dateinamen zu erhalten?
Danke.