Einzelnen Beitrag anzeigen

philipp.hofmann

Registriert seit: 21. Mär 2012
Ort: Hannover
859 Beiträge
 
Delphi 10.4 Sydney
 
#1

Fehler beim Android-FileProvider: Datei wird nicht geöffnet

  Alt 21. Mai 2019, 09:13
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
  Mit Zitat antworten Zitat