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

  • 6 Antworten
  • Neuester Beitrag
Diskutiere PDF.js kann externe PDF nicht laden (erst ab Android 11) im Android App Entwicklung im Bereich Betriebssysteme & Apps.
T

tefracky

App-Anbieter (kostenlos)
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:
T

tefracky

App-Anbieter (kostenlos)
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.
 
T

tefracky

App-Anbieter (kostenlos)
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()?
 
swa00

swa00

Moderator
Teammitglied
Musst du probieren , ich denke ja.

Auch wird es bald erforderlich sein , die Assets so in Zukunft zu synchronisieren.
 
Zuletzt bearbeitet:
T

tefracky

App-Anbieter (kostenlos)
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
 
Ähnliche Themen - PDF.js kann externe PDF nicht laden (erst ab Android 11) Antworten Datum
4
8