Проблема с веб-обзором, PDF-ссылки не открываются, пожалуйста, помогите - PullRequest
0 голосов
/ 13 января 2019

Я пытаюсь открыть pdf-файлы из списка выбора с помощью wevbview, но когда я нажимаю в приложении, ничего не происходит, я даю приложению разрешение на доступ в Интернет и для чтения и записи (жестко не нужно) в ext storage. Кто-нибудь может дать мне подсказку?

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

public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (url.endsWith(".pdf")){
            Intent intent = new Intent(Intent.ACTION_VIEW);
            intent.setDataAndType(Uri.parse(url), "application/pdf");
            try{
                view.getContext().startActivity(intent);
            } catch (ActivityNotFoundException e) {
                //user does not have a pdf viewer installed
            }
        } else {
            webview.loadUrl(url);
        }
        return true;

1 Ответ

0 голосов
/ 14 января 2019

Хорошо, поэтому я изменил код, поэтому вместо просмотра в веб-просмотре он должен просто загрузить файл. Я до сих пор не знаю, почему приведенный выше код не вызывал программу просмотра PDF по умолчанию на устройстве. Я установил более 5 программ просмотра PDF на свое устройство и сделал по крайней мере 3 из них по умолчанию для тестирования - не сработало. Итак, в конце я просто изменил shouldOverrideUrlLoading, чтобы загрузить файл в ext хранилище, и с тех пор пользователь может открыть его любым приложением, которое он хочет / установил. Решение:

 public boolean shouldOverrideUrlLoading (WebView view, String url) {
        if (url.endsWith(".pdf")) {
            startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));

            return true;
        }
        return false;
    }

также добавлены разрешения на манифест для доступа к менеджеру загрузки по умолчанию и внешнему хранилищу

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_DOWNLOAD_MANAGER"/>

это исправило это для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...