PDF.js kann externe PDF nicht laden (erst ab Android 11)

T

tefracky

App-Anbieter (kostenlos)
184
Hallo,

ich benutze PDF.js, um verschiedene PDFs in meiner App anzuzeigen. Bis Android 10 hat alles einwandfrei funktioniert und mit einem Wechsel auf "targetSdkVersion 30" trat der Fehler dann auf.

Wenn ich eine PDF öffnen möchte, kommt folgender Fehler:

Code:
Missing PDF "file:///storage/emulated/0/Android/data/<App-ID>/files/file.pdf

Der Pfad ist allerdings definitiv richtig, ich habe ihn überprüft bzw. er wird durch
Code:
getExternalFilesDir(null).absolutePath
ermittelt.

Die gesamte URL zum Laden lautet:
Code:
file:///android_asset/web/viewer.html?file=/storage/emulated/0/Android/data/<app-ID>/files/file.pdf

Wenn ich weiterhin "targetSdkVersion 29" benutze, dann funktioniert alles einwandfrei (auch bei Android 11) und wenn ich "targetSdkVersion 30" verwende (sonst ist nichts geändert), tritt das Problem auf (auch bei Android 10).

Woran könnte das liegen?
 
Zuletzt bearbeitet:
So wie ich das verstanden habe, dürfte das aber eigentlich keinen Einfluss bei mir haben, da ich immer nur direkt auf den App-eigenen Ordner in Android/data zugreife. Runterladen und schreiben in den Ordner geht nach wie vor. Was müsste ich denn ändern, damit ich die PDFs weiterhin öffnen kann? Die explizite Abfrage nach der Speicher-Berechtigung habe ich schon getestet.
 
Nur damit ich das jetzt richtig verstehe: Ich muss eine explizite Abfrage über ActivityResult implementieren, damit die App auf ihre eigenen selbst erstellten Dateien in ihrem eigenen Standard Android App-Ordner laden darf? Könnte ich mir das ersparen, indem ich anstatt dem SD Speicher den internen App-Speicher nutze, auf den man ohne Root sonst keinen Zugriff hat, also anstatt getExternalFilesDir(null) einfach getFilesDir()?
 
Musst du probieren , ich denke ja.

Auch wird es bald erforderlich sein , die Assets so in Zukunft zu synchronisieren.
 
Zuletzt bearbeitet:
Die Lösung war maximal einfach:

Bis API 29:
Code:
webView.settings..allowFileAccessFromFileURLs = true

Ab API 30:
Code:
webView.settings..allowFileAccessFromFileURLs = true
webView.settings.allowFileAccess = true
 
  • Danke
Reaktionen: swa00

Ähnliche Themen

M
Antworten
4
Aufrufe
1.150
swa00
swa00
SaniMatthias
Antworten
19
Aufrufe
871
swa00
swa00
5
Antworten
0
Aufrufe
1.117
586920
5
Zurück
Oben Unten