Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Datei in Android öffnen mit Intent schlägt teilweise fehl (https://www.delphipraxis.net/200210-datei-android-oeffnen-mit-intent-schlaegt-teilweise-fehl.html)

skoschke 29. Mär 2019 05:59

Datei in Android öffnen mit Intent schlägt teilweise fehl
 
Hallo,

ich öffne Dateien so:
Delphi-Quellcode:
...
  filename := 'file://' + filename;
  Intent := TJIntent.Create;
  Intent.setAction(TJIntent.JavaClass.ACTION_VIEW);
  Intent.setFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK);
  MimeType := getMimeType(StringToJString(filename));
  Intent.setDataAndType(StrToJURI(filename), MimeType);
  TAndroidHelper.Activity.startActivity(Intent);
das funktioniert mit allem was ich mir wünsche, txt, jpg, pdf, xlsx, xls, docx, doc, ...
aber nur solange der Dateiname keine Leerzeichen enthält.
Bei einer Datei "Mein Test.txt" kommt die Meldung

"Beim Parsen des Pakets ist ein Problem aufgetreten!"

Wo liegt der Fehler?

Ciao
Stefan

hoika 29. Mär 2019 06:14

AW: Datei in Android öffnen mit Intent schlägt teilweise fehl
 
Hallo,
zumindestens bei Windows gibt man den Namen in Doppelhochkomma an.

Hier ein ähnliches Problem und vielleicht die Lösung
https://stackoverflow.com/questions/...pened/39327116

skoschke 29. Mär 2019 07:09

AW: Datei in Android öffnen mit Intent schlägt teilweise fehl
 
Hallo Heiko,

danke erst mal!

Hochkomma bringen nichts und der Link ist auch nicht ganz die korrekte Lösung, hat mich aber darauf gebracht, dass man die Leerzeichen durch "%20" ersetzen muss.

Ciao
Stefan

Rollo62 29. Mär 2019 11:59

AW: Datei in Android öffnen mit Intent schlägt teilweise fehl
 
Hallo Stefan,

heisst das jetzt das es mit "%20" wie unten angegeben funktioniert ?

TurboMagic 29. Mär 2019 14:57

AW: Datei in Android öffnen mit Intent schlägt teilweise fehl
 
Falls dem so ist, sollte man den ganzen String mittels einer URLEncode Funktion konvertieren, da evtl weitere Zeichen zu ersetzen sind. Frage nur, wo es so eine Methode gibt...

HolgerX 29. Mär 2019 17:39

AW: Datei in Android öffnen mit Intent schlägt teilweise fehl
 
Hmm..

Gib bei Google einfach mal "Delphi URLEncode" und du landest gleich hier:

https://stackoverflow.com/questions/...ncode-function


Delphi-Quellcode:
uses
  IdURI;

..
begin
  S := TIdURI.URLEncode(str);
//
  S := TIdURI.URLDecode(str);
end;

skoschke 1. Apr 2019 08:19

AW: Datei in Android öffnen mit Intent schlägt teilweise fehl
 
Du hast recht, das Leerzeichen ist nicht alles, Umlaute machen natürlich auch Probleme!

Die ganzen Lösungen in dem Stackoverflow Link funktionieren leider nicht, die machen aus äöüß -> %E4%F6%FC%DF und das bringt die meldung, dass die Datei nicht geöffnet werden kann!

Auch die ganzen UTF8Encode-Lösungen machen das Gleiche...

Ich vermute, ich muss aus den Sonderzeichen 2-Bytes machen, aber wie?

Ich habe hier "UTFbEncode" gefunden, das kennt mein Delphi aber nicht und Google bringt mich da auch nicht weiter :-(

Ciao
Stefan

bra 2. Apr 2019 11:30

AW: Datei in Android öffnen mit Intent schlägt teilweise fehl
 
Guck mal hier:

https://www.delphipraxis.net/188372-...anwendung.html

Du brauchst TJnet_Uri zum Umwandeln in einen URL.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:30 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