java - Android Studio - Webview Api 级别 - 29 问题

标签 java android android-webview

似乎android 29的webview在页面可见时调用onpagestarted,因此我无法像我在<29中那样在使页面可见之前显示进度对话框。

webView.setWebViewClient(new WebViewClient() {
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
        //onpage start
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);
            //if not first time show the second dialog or else dont show
            if (!firsttime) {
                loading2.setVisibility(View.VISIBLE);
            }
            else{
                loading2.setVisibility(View.INVISIBLE);
            }
            is_loading = true;

        }

        @Override
        public void onLoadResource(WebView view, String url) {
            super.onLoadResource(view, url);
        }

        @Override
        public void onPageCommitVisible(WebView view, String url) {
            super.onPageCommitVisible(view, url);
            //set loading false 
            is_loading = false;
            loading2.setVisibility(View.INVISIBLE);
        }

        public void onPageFinished(WebView view, String url) {
            //set loading false 
            is_loading = false;
            if (firsttime) {
                relativeLayout.setVisibility(View.INVISIBLE);
                firsttime = false;

            }
            loading2.setVisibility(View.INVISIBLE);
            webView.setVisibility(View.VISIBLE);
        }

        public void onReceivedError(WebView view, int errorCode, String description, final String failingUrl) {
            //if error recieve
            if (firsttime) {
                relativeLayout.setVisibility(View.INVISIBLE);
                firsttime = false;
            }
            loading2.setVisibility(View.INVISIBLE);
            view.setVisibility(View.GONE);
            webView.loadUrl("file:///android_asset/error.html");
            AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
            builder.setTitle("Opss..")
                    .setMessage("Sorry, Please try Again !")
                    .setPositiveButton("Retry", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {

                            webView.loadUrl(failingUrl);
                            iserror = true;
                        }
                    })
                    .setCancelable(false)
                    .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {
                            finish();
                        }
                    })
                    .show();
        }

    });

最佳答案

嘿伙计们,我已经解决了问题....我在页面覆盖中编写了代码并且它有效...

关于java - Android Studio - Webview Api 级别 - 29 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56684423/

相关文章:

android - 应用程序突然与 Google Play 上的平板电脑不兼容

java - FileNotFoundException、URL 连接错误、Babelfy、Java

java - xjc,maven-jaxb2-插件 : cryptic java. lang.NoSuchMethodException : javax. xml.bind.annotation.XmlElementRef.required()

java - 在这个哈希表push方法中不断得到NullPointerException

java - MQTT Java 发布者和 Nodejs 订阅者

c# - 将 android 模拟器连接到本地主机 web 服务 [C#]

android - 如何使用 Phonegap 将 Android 手机拍摄的图像移动到另一个文件夹

Javascript:android Webview 中的 window.saveAs

android - 在 Android 中预加载网页(使用 WebView?)

android - WebView 的触发或强制重绘或重新渲染