Danke, funktioniert soweit. Hier der Vollständigkeithalber noch der Code, wie ich jetzt Dateien in den SharedDownload-Folder bekomme (den Read-Code habe ich in einem anderen Issue schon gepostet):
Aufruf der Dateiauswahl-Funktion:
Delphi-Quellcode:
var Intent: JIntent;
fileToWrite:=appPathRef+'docs'+System.IOUtils.TPath.DirectorySeparatorChar+'icTrainer.txt';
TMessageManager.DefaultManager.SubscribeToMessage(TMessageResultNotification, HandleActivityMessageTCXWrite);
Intent:=TJIntent.create;
Intent.setAction(TJIntent.JavaClass.ACTION_CREATE_DOCUMENT);
Intent.setType(StringToJString('*/*'));
Intent.putExtra(TJIntent.JavaClass.EXTRA_TITLE,StringToJString(TFileUtils.removePath(fileToWrite)));
Intent.addCategory(TJIntent.JavaClass.CATEGORY_OPENABLE);
MainActivity.startActivityForResult(Intent,0);
Schreiben der Datei (hier Kopie einer vorhandenen Datei):
Delphi-Quellcode:
procedure TicTrainerF.HandleActivityMessageTCXWrite(
const Sender: TObject;
const M: TMessage);
var Data:JIntent;
uri:
String;
jos: JOutputStream;
Arr: TBytes;
len:Integer;
b: TJavaArray<Byte>;
begin
if (M
is TMessageResultNotification)
then
begin
TMessageManager.DefaultManager.Unsubscribe(TMessageResultNotification, HandleActivityMessageTCXWrite);
data:=TMessageReceivedNotification(M).Value;
uri:=JStringToString(Data.getData.toString);
Arr := TEncoding.UTF8.GetBytes(TStringUtils.listToString(TFileUtils.readFileUTF8(fileToWrite),TStringUtils.getLineFeed()));
len := Length(Arr);
b:=TJavaArray<Byte>.Create(len);
if (len>0)
then
Move(Arr[0],b.Data^,len);
jos:=TAndroidHelper.Context.getContentResolver.openOutputStream(Data.getData);
jos.
write(b);
jos.close;
end;
end;