Hi,
ich finde den Fehler nicht, warum ich meine pdf nicht unter Android mit der damit verbundenen Standard-App öffnen kann:
Mit meiner App liefere ich die Datei:
Android/data/
com.icTrainer/files/docs/icTrainer.pdf
aus, welche ich auch problemlos über den Dateimanager öffnen kann. Ich möchte die Datei jetzt auch über die App in der damit verbundenen Standard-App öffnen.
Dazu definiere ich in Android\Release\icTrainer\AndroidManifest den FileProvider (ich dokumentiere die ausgelieferten
xml-Files nicht die Templates):
Delphi-Quellcode:
...
<provider android:name="android.support.v4.content.FileProvider"
android:authorities="
com.icTrainer.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@
xml/fileprovider" />
</provider>
</application>
Und diesen definiere ich in Android\Release\icTrainer\res\
xml\fileprovider.xml
Delphi-Quellcode:
<?
xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http:
//schemas.android.com/apk/res/android">
<files-path name="ictresources" path="docs/" />
</paths>
und nun rufe ich es folgendermaßen via Delphi auf:
Delphi-Quellcode:
var
fileuri: JNet_Uri;
Intent: JIntent;
begin
fileuri := StrToJURI('
content://com.icTrainer.fileprovider/ictresources/icTrainer.pdf');
Intent := TJIntent.Create;
Intent.setAction(TJIntent.JavaClass.ACTION_VIEW);
Intent.setDataAndType(fileuri,StringToJString('
application/pdf'));
Intent.setFlags(TJIntent.JavaClass.FLAG_GRANT_READ_URI_PERMISSION);
TAndroidHelper.Activity.StartActivity(Intent);
end;
Trotzdem zeigt mir z.B. Word den Fehler
"Datei kann nicht geöffnet werden. Versuchen Sie, die Datei auf dem Gerät zu speicheren und sie dann zu öffnen"
an und öffnet das pdf-File nicht.
Wo ist der Fehler? Ich sträubte mich die Datei zuerst in ein öffentliches Verzeichnis zu kopieren, weil dadurch unnötiger Datenmüll entsteht.
Grüße, Philipp