Android之WebView

这篇博客详细探讨了Android中WebView的使用,包括加载网页、监听事件、基本设置、Android与JavaScript的交互、处理html页面、实现双击返回功能以及清除数据等关键操作。
摘要由CSDN通过智能技术生成

WebView加载

	//加载网址
	webview.loadUrl("https://www.baidu.com/");
	//  加载html assets文件下
    // 格式规定为:file:///android_asset/文件名.html
    web.loadUrl("file:///android_asset/js.html");

WebView 监听

        webview.setWebChromeClient(new WebChromeClient() {
            //这里设置获取到的网站title
            @Override
            public void onReceivedTitle(WebView view, String title) {
                super.onReceivedTitle(view, title);
            }

            //至此不支持js的alert弹窗,需要自己监听然后通过dialog弹窗
            @Override
            public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
                return super.onJsAlert(view, url, message, result);
            }

            //加载进度回调
            @Override
            public void onProgressChanged(WebView view, int newProgress) {
                super.onProgressChanged(view, newProgress);

            }
        });
        webview.setWebViewClient(new WebViewClient() {
            //在webview里打开新链接
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return true;
            }

            //页面开始加载
            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                super.onPageStarted(view, url, favicon);
            }
        });

webview基本设置

WebSettings settings = webview.getSettings();
        settings.setUseWideViewPort(true);//设定支持viewport
        settings.setLoadWithOverviewMode(true);   //自适应屏幕
        settings.setBuiltInZoomControls(true);
        settings.setDisplayZoomControls(false);
        settings.setSupportZoom(true);//设定支持缩放
        // 设置与Js交互的权限
        settings.setJavaScriptEnabled(true);
        // 设置允许JS弹窗
        settings.setJavaScriptCanOpenWindowsAutomatically(true);
        settings.setAllowFileAccess(true);

Android 调用js

 			// 注意调用的JS方法名要对应上
            // 调用javascript的callJS()方法
            web.loadUrl("JavaScript:callJSMethod()");

js调用Android

        web.addJavascriptInterface(this,"android");

	// 定义JS需要调用的方法
    // 被JS调用的方法必须加入@JavascriptInterface注解
    @JavascriptInterface
    public void callAndroidMethod(String str){
        Toast.makeText(this, "ni"+str, Toast.LENGTH_SHORT).show();
    }

html页面

<html>
<title>Demo 测试页面</title>
<script>
        //android端调用js端方法
        function callJSMethod(){
            alert('一个js提示信息');
        }
        //js端调用Android端方法
        function callAndroidMethod(){
            //alert('123');
            //调用android 方法
            window.android.callAndroidMethod('js调用安卓方法!')
        }
    </script>
<body>
    <div>
        <button id="btn_showMsg" onclick="callAndroidMethod();">调用Android端方法</button>
    </div>
</body>
</html>

双击返回

    @Override
    public void onBackPressed() {
        if (webview.canGoBack()) {
            webview.goBack();
        } else {
            if ((System.currentTimeMillis() - exitTime) > 2000) {
                Toast.makeText(getApplicationContext(), "再按一次退出程序",
                        Toast.LENGTH_SHORT).show();
                exitTime = System.currentTimeMillis();
            } else {
                finish();
            }

        }
    }

清除数据

    @Override
    protected void onDestroy() {
        super.onDestroy();
        if(web != null){
            web.clearCache(true);//清除缓存
            web.clearHistory();//清除历史记录
            web.clearFormData();//清除数据
            web.destroy();//销毁webview

        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值