WebView详细介绍

常用设置

WebSettings mWebSet = mWebView.getSettings();
mWebSet.setJavaScriptEnabled(true); // 支持js
mWebSet.setSupportZoom(true); //支持缩放,默认为true
mWebSet.setBuiltInZoomControls(false); //显示缩放工具,默认为false。
mWebSet.setDefaultFontSize(18); // 字体大小,默认为16,有效值区间在1-72之间。
mWebSet.setAppCacheEnabled(true);
mWebSet.setCacheMode(WebSettings.LOAD_DEFAULT);// 设置缓存模式

mWebView.setWebViewClient(new ThroughClient());
mWebView.setWebChromeClient(new ThroughChromeClient());
mWebView.addJavascriptInterface(this, "meilishe");

mWebView.loadUrl(url);

WebViewClient

class ThroughClient extends WebViewClient {
        // 打开网页时调用本webview
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            if (url.startsWith("tel:")) {
                Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                startActivity(intent);
                return true;
            }
            view.loadUrl(url);
            return true;
        }

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

        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            // mTbTitle.setText(mWebView.getTitle());
        }
    }

WebChromeClient

@SuppressLint("NewApi")
    class ThroughChromeClient extends WebChromeClient {

        // 更新进度条
        @Override
        public void onProgressChanged(WebView view, int newProgress) {
            super.onProgressChanged(view, newProgress);
        }

        class DismissListener implements DialogInterface.OnDismissListener {
            JsResult result;

            DismissListener(final JsResult result) {
                this.result = result;
            }

            @Override
            public void onDismiss(DialogInterface dialog) {
                result.cancel();
            }
        }

        @Override
        public boolean onJsAlert(WebView view, String url, String message,
                final JsResult result) {
            new AlertDialog.Builder(mContext)
                    .setOnDismissListener(new DismissListener(result))
                    .setTitle("来自星星的提示")
                    .setMessage(message)
                    .setPositiveButton("YES",
                            new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog,
                                        int which) {
                                    // 处理结果为确定状态 同时唤醒WebCore线程
                                    result.confirm();
                                }
                            }).show();
            return true; // 已处理
        }

        @Override
        public boolean onJsConfirm(WebView view, String url, String message,
                final JsResult result) {
            new AlertDialog.Builder(mContext)
                    .setOnDismissListener(new DismissListener(result))
                    .setTitle("confirm")
                    .setMessage(message)
                    .setPositiveButton("YES",
                            new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog,
                                        int which) {
//                                  Toast.makeText(mContext, "you clicked yes",0).show();
                                    ToastTools.show(mContext, "you clicked yes",0);
                                    result.confirm();
                                }
                            })
                    .setNegativeButton("NO",
                            new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog,
                                        int which) {
                                    // 处理结果为取消状态 同时唤醒WebCore线程
                                    result.cancel();
                                }
                            }).create().show();
            return true;
        }

        @Override
        public boolean onJsPrompt(WebView view, String url, String message,
                String defaultValue, final JsPromptResult result) {
            // defaultValue 默认值
            // message 消息内容
            new AlertDialog.Builder(mContext)
                    .setOnDismissListener(new DismissListener(result))
                    .setTitle("prompt")
                    .setPositiveButton("YES",
                            new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog,
                                        int which) {
                                    // 记录结果
                                    result.confirm("返回结果");
                                }
                            })
                    .setNegativeButton("NO",
                            new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog,
                                        int which) {
                                    result.cancel();
                                }
                            }).create().show();
            return true;
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值