У меня проблема с чтением 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);
}
}