![]() |
Dateien auflisten Android
Hallo,
der folgende Code für Android gibt unter D12.1 und Win11 keine Dateien zurück:
Code:
Ich habe von Problemen gehört, aber deren Lösungen funktionieren auch nicht. Die Berechtigungen habe ich "erhöht". Keine Besserung.
var i: Integer;
dl, fl: TStringList; DirList: TStringDynArray; FileList: TStringDynArray; begin dl:=TStringList.Create; fl:=TStringList.Create; DirList:=TDirectory.GetDirectories(pa); FileList:=TDirectory.GetFiles(pa); for i:=0 to High(DirList) do dl.Add(DirList[i]); for i:=0 to High(FileList) do fl.Add(FileList[i]); ... Hat das hier überhaupt schon mal jemand mit dieser Umgebung hinbekommen? Danke und beste Grüße |
AW: Dateien auflisten Android
Was steht denn in "pa" ?
|
AW: Dateien auflisten Android
TPath.GetSharedDocumentsPath;
|
AW: Dateien auflisten Android
Besteht das Problem jetzt unter Windows oder Android? Unter aktuellen Androids ist es nicht mehr so einfach, auf Shared documents zuzugreifen.
|
AW: Dateien auflisten Android
Windows geht, nur unter Android nicht.
|
AW: Dateien auflisten Android
|
AW: Dateien auflisten Android
Leider bisher kein Erfolg. App soll ein "Text Compare" werden. Frage ist nun: Wie kann ich linke und rechte Datei auswählen/zuweisen?
|
AW: Dateien auflisten Android
Das funktioniert jetzt folgendermaßen:
Aufruf Explorer:
Delphi-Quellcode:
Abarbeitung der Auswahl:
TMessageManager.DefaultManager.Unsubscribe(TMessageResultNotification, HandleActivityMessageTCXWrite);
TMessageManager.DefaultManager.SubscribeToMessage(TMessageResultNotification, HandleActivityMessageImportRead); Intent := TJIntent.Create; Intent.setType(StringToJString('*/*')); //Intent.setType(StringToJString('application/zip'));//possible but I need gpx-files also //Intent.setType(StringToJString('application/gpx'));//not possible Intent.setAction(TJIntent.JavaClass.ACTION_GET_CONTENT); MainActivity.startActivityForResult(Intent, 0);
Delphi-Quellcode:
Mehrfachauswahl muss ich mir auch noch anschauen.
procedure TicTrainerF.HandleActivityMessageGPXRead(const Sender: TObject; const M: TMessage);
var //P: TJavaObjectArray<Jstring>; Data:JIntent; C: JCursor; I: integer; uri,filename:String; ms: TMemoryStream; jis: JInputStream; b: TJavaArray<Byte>; begin if (M is TMessageResultNotification) then begin mlog.info('start to read GPX-file'); TMessageManager.DefaultManager.Unsubscribe(TMessageResultNotification, HandleActivityMessageGPXRead); data:=TMessageReceivedNotification(M).Value; if (data=nil) then begin mlog.info('nothing to Import'); exit; end; uri:=JStringToString(Data.getData.toString); //P:=TJavaObjectArray<Jstring>.create(1); //P.Items[0]:=StringToJstring('_data'); mlog.info('try to get GPX-File from: '+uri); C := MainActivity.getContentResolver.query(Data.getData, nil {P}, StringToJString(''),nil, StringToJString('')); C.moveToFirst; for I := 0 to C.getColumnCount - 1 do begin if JStringToString(C.getColumnName(I)) = '_display_name' then begin filename:=JStringToString(C.getString(I)); Break; end; end; mlog.info('try to store GPX-File: '+filename); if ((not lowercase(filename).endsWith('.gpx')) and (not lowercase(filename).endsWith('.zip'))) then begin showInfo(translation.get(3066,'The file')+'|'+filename+'|'+translation.get(3067,'is not a GPX-File.'),TMsgDlgType.mtError); exit; end; ms := TMemoryStream.Create(); try jis := TAndroidHelper.Context.getContentResolver.openInputStream(Data.getData); b := TJavaArray<Byte>.Create(jis.available); jis.read(b); ms.Write(b.Data^, b.Length); jis.close; mlog.info('prepare save GPX-file to '+filename+' '+IntToStr(b.length)); TFileUtils.checkDirSequence(TFileUtils.adjustDir(eConfigMyExerciseDirectory.text)+'GPX'); filename:=TFileUtils.adjustDir(TFileUtils.adjustDir(eConfigMyExerciseDirectory.text)+'GPX')+filename; //filename:=StringReplace(filename,' ','',[rfReplaceAll]); //bad to search for the video mlog.info('save GPX-file to '+filename+' '+IntToStr(b.length)); ms.saveToFile(filename); mlog.info('saved GPX-file'); finally ms.free(); end; mlog.info('read GPX-file '+filename); readExerciseFromGPX(btWizardGPXRead,filename,true,true); end; end; |
AW: Dateien auflisten Android
Wie muss ich das einbauen? Kannst du dazu bitte noch ein paar erklärende Zeilen schreiben?
|
AW: Dateien auflisten Android
In Seattle geht GetFiles. Habe mal die Seattle IOUtils in Athens benutzt, ging auch nicht. Es liegt also an den Android-Rechten. Trotzdessen ich alle möglichen Android-Rechte dem Projekt mitgegeben habe blieb der Erfolg aus.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:39 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