Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Android 11+: Verzeichnis auslesen (https://www.delphipraxis.net/209925-android-11-verzeichnis-auslesen.html)

amigage 8. Feb 2022 15:10

Android 11+: Verzeichnis auslesen
 
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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:01 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz