【问题标题】:show white page in webview when load (PDF url) url android加载时在webview中显示白页(PDF url)url android
【发布时间】:2020-07-21 19:15:15
【问题描述】:

我尝试将 pdf URL 加载到 webview 中,但有时 URL 加载完美或有时显示白页。它显示一个白页,因为它直接调用onPageFinished 方法。我尝试登录onReceivedSslErroronReceivedHttpError,但是当加载白屏时它直接调用onPageFinished方法。如何每次使用 URL 加载我的 pdf?

我的代码是:-

     url = getIntent().getStringExtra("url");
        fileName = getIntent().getStringExtra("name");

        try {
            masterURL = "https://drive.google.com/viewerng/viewer?embedded=true&url=" + URLEncoder.encode(url, "UTF-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }

        requireNonNull(getSupportActionBar()).setTitle(fileName + " Report");
        WebSettings settings = webview.getSettings();
        settings.setJavaScriptEnabled(true);
        settings.setAppCacheEnabled(true);
        settings.setDomStorageEnabled(true);
        settings.setLoadsImagesAutomatically(true);
        settings.setDatabaseEnabled(true);
        settings.setRenderPriority(WebSettings.RenderPriority.HIGH);
        settings.setCacheMode(WebSettings.LOAD_NO_CACHE);
        settings.setSupportZoom(true);
        settings.setBuiltInZoomControls(true);

        //webview.setLayerType(WebView.LAYER_TYPE_SOFTWARE, null);
        //webview.invalidate();

        webview.setWebViewClient(new WebViewClient() {
            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                Toast.makeText(TestPDFActivity.this, errorCode, Toast.LENGTH_SHORT).show();

                progressDialog.dismiss();
            }

            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {


            }

            @Override
            public void onPageFinished(WebView view, String url) {
                progressDialog.dismiss();

            }

            @Override
            public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
                super.onReceivedSslError(view, handler, error);
                handler.proceed();

            }

            @Override
            public void onReceivedHttpError(WebView view, WebResourceRequest request, WebResourceResponse errorResponse) {
                super.onReceivedHttpError(view, request, errorResponse);

            }
        });


        webview.loadUrl(masterURL);

【问题讨论】:

  • 您是否在Manifest 文件中声明了internetaccess network state 权限
  • @NensiKasundra 是的,我在清单中添加了
  • 你检查上面的链接吗
  • 不工作@NensiKasundra

标签: android pdf webview


【解决方案1】:

最后我得到了 ans 只需将此行添加到 onPageFinished 方法中:-

if (view.getTitle().equals("")) {
                view.reload();

   }

并且繁荣它的工作!

【讨论】:

  • 你真的救了我。谢谢!
【解决方案2】:

这是工作代码。这可能会有所帮助。

XML

<?xml version="1.0" encoding="utf-8"?>
<layout>

    <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".activities.WebViewActivity">

        <WebView
            android:id="@+id/webview"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

    </androidx.constraintlayout.widget.ConstraintLayout>
</layout>

科特林

class WebViewActivity : AppCompatActivity() {
    private lateinit var activityWebViewBinding: ActivityWebViewBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        activityWebViewBinding = DataBindingUtil.setContentView(this, R.layout.activity_web_view)
        val path =  "https://github.github.com/training-kit/downloads/github-git-cheat-sheet.pdf"
        loadPdfFromURL(path)
    }

    @SuppressLint("SetJavaScriptEnabled")
    private fun loadPdfFromURL(path: String?) {
        activityWebViewBinding.webview.settings.loadWithOverviewMode = true
        activityWebViewBinding.webview.settings.javaScriptEnabled = true
        val url = "https://docs.google.com/gview?embedded=true&url=$path"
        activityWebViewBinding.webview.loadUrl(url)
    }
}

【讨论】:

  • 请检查我的网址是否有效
【解决方案3】:

将此行添加到 onPageFinished 方法中

if (view.getTitle().equals("")) { view.reload();

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-09
    • 2020-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多