Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   PDF anzeigen in Delphi FMX 10.3 für Android (https://www.delphipraxis.net/199520-pdf-anzeigen-delphi-fmx-10-3-fuer-android.html)

AuronTLG 29. Jan 2019 10:29

PDF anzeigen in Delphi FMX 10.3 für Android
 
Moin,

ich bin auf ein neues Problem mit 10.3 gestoßen, nämlich, dass das PDF öffnen nicht mehr so funktioniert wie in 10.2, soweit so gut.

Ich habe mich bereits informiert und weiß, dass das jetzt über den Provider läuft, anstatt "file://" nun "content://" stehen muss etc, ist meines Wissens auch alles korrekt eingestellt.

Dummerweise sieht das bei mir derzeit so aus, dass beim Ausführen des Intents, der die PDF öffnet, zwar das PDF-Programm aufgeht, aber leer ist, ohne dass irgendein Fehler aufgetreten ist.
Öffne ich die PDF normal außerhalb der App, wird diese ganz normal angezeigt.

Die PDF liegt im öffentlichen Dokumentenverzeichnis. Mein derzeitiges Vorgehen im Quelltext sieht so aus:

Code:
Var Intent : JIntent;
    Uri    : Androidapi.JNI.Net.Jnet_Uri;
Begin
Uri        := Androidapi.JNI.Net.TJnet_Uri.JavaClass.parse(StringToJString('content://' + DateiName));
Intent     := TJIntent.Create;
Intent.SetAction(TJIntent.JavaClass.ACTION_VIEW);
Intent.SetDataAndType(Uri, StringToJString('application/pdf'));
Intent.setFlags(TJIntent.JavaClass.FLAG_GRANT_READ_URI_PERMISSION);
Intent.setFlags(TJIntent.JavaClass.FLAG_GRANT_WRITE_URI_PERMISSION);

SharedActivity.startActivity(intent);
End;
Wenn jemand das PDF-Anzeigen in 10.3 schon umgesetzt hat und seine Erkenntnisse hier mit mir teilen könnte, wäre ich sehr dankbar.

Ein unglaublich toller Bonus wäre, wenn jemand wüsste, ob es inzwischen möglich ist, eine PDF auch auf Android in der Webbrowser-Komponente anzuzeigen, so wie das auch auf IOS läuft.

philipp.hofmann 29. Jan 2019 20:00

AW: PDF anzeigen in Delphi FMX 10.3 für Android
 
Mein funktionierender Code sieht recht ähnlich aus zu deinem, aber am Ende geht es auseinander.
Helpfile ist einfach nur der Pfad zum pdf-File.

Delphi-Quellcode:
uses Androidapi.JNI.Os, Androidapi.Helpers, Androidapi.JNI.GraphicsContentViewText;
var
   fileuri: JParcelable;
   Intent: JIntent;
begin
    fileuri := JParcelable(TJNet_Uri.JavaClass.fromFile(TJFile.JavaClass.init(StringToJString(helpFile))));
    Intent := TJIntent.Create;
    Intent.setAction(TJIntent.JavaClass.ACTION_VIEW);
    intent.setType(StringToJString('application/pdf'));
    Intent.putExtra(TJIntent.JavaClass.EXTRA_STREAM, fileuri);
    TAndroidHelper.Activity.StartActivity(Intent);
end;

AuronTLG 30. Jan 2019 08:43

AW: PDF anzeigen in Delphi FMX 10.3 für Android
 
Funktioniert der Code auf 10.3?

Bei mir bekomme ich dann im Anzeigeprogramm die Meldung "Datei kann nicht geöffnet werden". Außerhalb der App manuell öffnen geht aber.

Und nur um sicher zu gehen.. In HelpFile steht nur der eigentliche Pfad, nicht irgendwie "content://" oder sowas davor?

philipp.hofmann 30. Jan 2019 13:44

AW: PDF anzeigen in Delphi FMX 10.3 für Android
 
Sorry, zu ungenau deine Fehlerbeschreibung gelesen.
Mit 10.3 und Android stehe ich noch auf Kriegsfuß, weil dort der TMediaPlayer nicht gescheit funktioniert.
Ich habe es jetzt aber mal auch dort ausprobiert und Du hast recht, es geht nicht mehr, in keiner Variante.
Dann werde ich mal interessiert beobachten, ob hier jemand anderes des Rätsels Lösung weiß.

AuronTLG 30. Jan 2019 14:14

AW: PDF anzeigen in Delphi FMX 10.3 für Android
 
Jo, ich bin deswegen, wie man im anderen Thread sehen kann, auf die Winsoft-Komponente PDFium zur PDF-Anzeige umgestiegen.
Hat auch den Vorteil, dass ich die PDF damit in der App selbst anstatt in einem externen Programm anzeigen kann.


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