показывать белую страницу в веб-просмотре при загрузке (PDF url) url android - PullRequest
0 голосов
/ 09 апреля 2020

Я пытаюсь загрузить pdf URL в веб-просмотр, но иногда URL загружается идеально или иногда отображает белую страницу он отображает белую страницу, потому что напрямую вызывает метод onPageFinished. Я пытаюсь с логином onReceivedSslError, onReceivedHttpError, но при загрузке белого экрана он вызывает метод onPageFinished напрямую. Как я могу каждый раз загружать свой PDF-файл, используя URL-адрес?

мой код: -

     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);

Ответы [ 3 ]

1 голос
/ 09 апреля 2020

Это рабочий код. Это может быть полезно.

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>

Kotlin

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)
    }
}
0 голосов
/ 17 апреля 2020

добавить эти строки в метод onPageFinished

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

}

0 голосов
/ 17 апреля 2020

Наконец я получил ответ. Просто добавьте следующие строки в метод onPageFinished: -

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

   }

И Booom Его работа !!

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