Ja stimmt ich habe ms := TMemoryStream.Create; hinzugefügt und er stürzt nicht mehr ab.
Jetzt muss ich es nur noch ein wenig verbessern mit Fortschrittsbalken und mehreren Dateien und dann passt das.
Die Funktion sieht damit bis jetzt so aus:
function TMFORM.HandleIntentAction(const Data: JIntent): Boolean;
var
C: JCursor;
I: Integer;
ms : TMemoryStream;
InputStream : JInputStream;
b: TJavaArray<Byte>;
begin
Memo1.Lines.Add('
URI:' + JStringToString(Data.getData.toString)); // this returns the
URI in string perfectly... so I know that I am getting the file path properly
InputStream := MainActivity.getContentResolver.openInputStream(Da ta.getData);
b := TJavaArray<Byte>.Create(InputStream.available);
ms := TMemoryStream.Create;
InputStream.read(b);
Memo1.Lines.Add('Stream länge:' + inttoStr(b.Length));
ms.Write(b.Data^, b.Length);
InputStream.close;
idftp1.Connect;
ms.Position := 0;
idftp1.Put(ms,'test.jpg');
idftp1.Disconnect;
end;