В моем проекте используйте веб-загрузку pdf.
init веб-просмотр в onCreate
WebSettings webSettings = webView.getSettings();
webSettings.setUseWideViewPort(true);
webSettings.setLoadWithOverviewMode(true);
webSettings.setLoadsImagesAutomatically(true);
webSettings.setDefaultTextEncodingName("utf-8");
webSettings.setSupportZoom(true);
webSettings.setBuiltInZoomControls(true);
webSettings.setDisplayZoomControls(false);
webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);
webSettings.setJavaScriptEnabled(true);
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Log.d("test", "shouldOverrideUrlLoading");
return true;
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
Log.d("test", "onPageFinished");
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
Log.d("test", "onPageStarted url=" + url);
}
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
Log.d("test", "onReceivedError errorCode=" + errorCode + " description=" + description);
}
@Override
public void onReceivedHttpError(WebView view, WebResourceRequest request, WebResourceResponse errorResponse) {
super.onReceivedHttpError(view, request, errorResponse);
Log.d("test", "onReceivedHttpError");
}
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
super.onReceivedSslError(view, handler, error);
Log.d("test", "onReceivedSslError error=" + error.toString());
}
когда запрос сети получает URL-адрес PDF, вызовите webview.loadUrl ()
String encodeUrl = URLEncoder.encode(pdfUrl, "UTF-8");
Log.d("test", "start load pdf");
webView.loadUrl("https://docs.google.com/gview?embedded=true" + "&url=" + encodeUrl);
но иногда веб-просмотр будет пустым, и в этот раз я обнаружил, что Log равен
start load pdf
onPageFinished
Я не знаю, почему не вызывать onPageStarted, а напрямую вызывать onPageFinished, даже не получая никакой ошибки. Эта ошибка с большой вероятностью появляется, когда действия часто открываются и завершаются, а веб-просмотр не загружается.
Спасибо за ваш ответ.