React Native отображает PDF в веб-представлении Android

У меня есть приложение React Native, в котором на какой-то странице у меня есть веб-представление (react-native-webview) для отображения PDF-файлов с нашего сервера.

В iOS все работает нормально, в Android всякий раз, когда я пытаюсь просмотреть полученный файл:

Cannot downoad files as permission was denined. Please provide permission to write to storage, in order to download files.

Затем я добавил <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> в свой манифест. Теперь я получаю следующее предупреждение:

введите описание изображения здесь

Я думаю, что это довольно страшно и очень глупо с точки зрения пользовательского опыта. Я не получаю доступ к фотографиям, мультимедиа или файлам, все, что я пытаюсь сделать, это отобразить простой PDF-файл в веб-представлении. Я не хочу, чтобы мои пользователи получали такое предупреждение.

Когда я нажимаю «Разрешить», он говорит Downloading... и загружает PDF как файл, который можно открыть вне моего приложения. Я не хочу такого поведения, я хочу, чтобы PDF отображался внутри веб-представления, как это делает iOS.

Как я могу отображать PDF-файлы в Android с помощью веб-представления React Native без пугающего диалога, который не имеет ничего общего с тем, что я на самом деле пытаюсь сделать?

(Я использую React Native 0.59.9, Android 8.1, Android SDK 28, react-native-web-view 5.12.0)


person Can Poyrazoğlu    schedule 10.07.2019    source источник
comment
Я помню, как добавлял URL-адреса в формате PDF к URL-адресу средства просмотра документов Google, чтобы отображать их в веб-просмотре RN на Android. Вот так https://docs.google.com/gview?embedded=true&url=<pdf-url-goes-here>. Загрузка файлов может быть связана с заголовком ответа Content-Disposition: attachment для pdf-файлов. Этот заголовок заставит браузер сначала загрузить файл, прежде чем разрешить просмотр содержимого.   -  person Amar    schedule 11.07.2019
comment
@Amar Некоторые из PDF-файлов находятся на сервере, требующем аутентификации, не уверен, что их встраивание таким образом сработает.   -  person Can Poyrazoğlu    schedule 11.07.2019
comment
@Amar, к сожалению, мне нужна обычная программа для просмотра документов. Это может быть HTML, PDF или что-либо, что обычно открывается в веб-представлении, может быть или не быть за авторизацией. Я не знаю содержимого заранее, все, что я знаю, это то, что у меня есть авторизация, и это документ.   -  person Can Poyrazoğlu    schedule 11.07.2019


Ответы (1)


Попробовав разные вещи, я отказался от прямого отображения PDF-файлов и преобразования их в HTML. По-видимому, нет надежного способа отображать PDF-файлы в браузере по умолчанию (просмотр PDF-файлов напрямую может работать на некоторых машинах, но определенно ненадежен, поскольку не работал на моем устройстве/эмуляторах).

person Can Poyrazoğlu    schedule 28.07.2019