WebView [Uncaught TypeError: Невозможно прочитать свойство 'get' из неопределенного] - PullRequest
0 голосов
/ 09 июля 2019

У меня проблема с чтением PDF-файлов (с токеном) в моем WebView.

Ошибка заключается в том, что вы видите в вопросе:

Uncaught TypeError: Невозможно прочитать свойство'get' of undefined .

Странно то, что на моем смартфоне с Android 8.1.0 проблем нет, а на устройствах Android 5 и 7 у меня эта проблема.Я показываю вам код моего WebView, который на самом деле очень прост, и я ожидаю, что у меня нет контроля над страницей, которую показывает мне PDF, поэтому я не могу ничего сделать.

public class WebViewActivity extends AppCompatActivity {

    public static Activity controller;
    WebView mWebView;
    String mURL;
    PDFView mPdfView;
    boolean mIsPDF;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mPdfView = findViewById(R.id.pdfView);

        controller = this;
        mURL = "";
        if (getIntent().getData() != null) {
            mURL = getIntent().getData().toString();
            mIsPDF = mURL.contains(".pdf");
            setWebViewAndLoadURL(mURL);
        } else {
            mURL = "{url_with_pdf_link}";
            setWebViewAndLoadURL(mURL);

        }

    }

    private void setWebViewAndLoadURL(String URL) {;
        mWebView = new WebView(this);
        WebSettings settings = mWebView.getSettings();
        settings.setDomStorageEnabled(true);
        mWebView.clearCache(true);
        mWebView.clearHistory();
        settings.setAllowFileAccess(true);
        settings.setLoadWithOverviewMode(true);
        settings.setUseWideViewPort(true);
        settings.setJavaScriptEnabled(true);
        settings.setLoadsImagesAutomatically(true);
        settings.setJavaScriptCanOpenWindowsAutomatically(true);
        settings.setSupportMultipleWindows(true);

        if (!mIsPDF) {
            mWebView.setWebViewClient(new WebViewClient());
        }

        mWebView.setWebChromeClient(new WebChromeClient() {

            @Override
            public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) {
                WebView newWebView = new WebView(WebViewActivity.this);
                WebSettings webSettings = newWebView.getSettings();
                webSettings.setJavaScriptEnabled(true);
                webSettings.setDomStorageEnabled(true);
                webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
                webSettings.setSupportMultipleWindows(true);
                webSettings.setAllowFileAccess(true);
                webSettings.setLoadsImagesAutomatically(true);
                webSettings.setLoadWithOverviewMode(true);
                webSettings.setUseWideViewPort(true);
                newWebView.clearCache(true);
                newWebView.clearHistory();
                final Dialog dialog = new Dialog(WebViewActivity.this);
                dialog.setContentView(newWebView);
                dialog.show();
                newWebView.setWebChromeClient(new WebChromeClient() {
                    @Override
                    public void onCloseWindow(WebView window) {
                        dialog.dismiss();
                    }
                });
                ((WebView.WebViewTransport) resultMsg.obj).setWebView(newWebView);
                resultMsg.sendToTarget();
                return true;
            }

        });

        mWebView.loadUrl(URL);
        setContentView(mWebView);
    }

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