Android WebView使用总结

#.简介:

    WebView是Android提供的用来展示展示web页面的View,内部使用webkit浏览器引擎(一个轻量级的浏览器引擎),除了展示Web页面外,还可与Web页面内的JS脚本交互调用。

#一、WebView常用方法

1.加载Url或资源的方法

        //方式1:加载指定Url,可以指向网络资源,也可以是本地资源。这是最常用的加载方法。
        webView.loadUrl("百度一下,你就知道");
        webView.loadUrl("file:///xxx/xxx/test.html");
        //方式2:加载内容片段
        loadData(String data, String mimeType, String encoding);
        loadDataWithBaseURL(String baseUrl, String data, String mimeType, String encoding, String historyUrl));
​
注意:Android9.0之后,默认情况下是禁用明文支持的,因为默认是无法加载Http协议类型的Url的,加载时会报错:net:ERR_CLEARTEXT_NOT_PERMITTED。可以 把Http协议类型的Url换成对应的Https协议类型Url。
    如果要支持加载Http类型的Url,需要在AndroidManifest.xml中
<application> </application>节点下添加配置:  android:usesCleartextTraffic="true"

2.生命周期相关方法

        /*2.生命周期相关方法
            一般会根据所在页面的生命周期变化,来调用以下相关方法*/
        //2.1激活WebView实例为活跃状态,能正常执行网页的响应
        webView.onResume();

        //2.2通知WebView实例的内核暂停所有的动作,如页面解析、插件加载、JavaScript脚本执行等。
        //一般当页面被失去焦点被切换到后台不可见状态,需要执行onPause
        webView.onPause();

        //2.3暂停应用中所有webview的layout、parsing、javascriptTimer等,降低CPU功耗。
        //一般当应用被切换到后台时,调用该方法,作用于所有WebView
        webView.pauseTimers();
        //2.4恢复调用pauseTimers()后被暂停的状态
        webView.resumeTimers();

        //2.5销毁WebView实例
        //注意:为避免出错,要先把WebView从所在View树上移除,再销毁WebView实例
        rootLayout.removeView(webView);
        webView.destroy();

3.页面前进、后退

        /*3.页面前进、后退*/
        //是否可以后退
        webview.canGoBack();
        //后退一页
        webview.goBack();

        //是否可以前进
        webview.canGoForward();
        //前进一页
        webview.goForward();

        //以当前的index为起始点前进或者后退到历史记录中指定的steps
        //如果steps为负数则为后退,正数则为前进
        webview.goBackOrForward(steps);

4.事件拦截

        /*4.事件拦截
            有很多相关的方法,下面是几个例子*/
        //例如覆写按键事件,onKeyDown()/onKeyUp()
        @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
            //示例:点击返回按钮后,默认是触发Activity的finish。若需要触发网页回退,可以添加代码:
            if ((keyCode == KEYCODE_BACK) && mWebView.canGoBack()) {
                mWebView.goBack();
                return true;
            }
            return super.onKeyDown(keyCode, event);
        }

        @Override
        public boolean onKeyUp(int keyCode, KeyEvent event) {
            return super.onKeyUp(keyCode, event);
        }

5.设置回调接口

        /*5.设置回调接口
            有很多可设置的接口,下面是个例子*/
        //设置下载监听接口
        webView.setDownloadListener(new DownloadListener() {
            @Override
            public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) {
               
            }
        });

6.其它方法

    /*6.其它方法*/
    //刷新页面(当前页面的所有资源都会重新加载)
    webView.reload();
    //停止加载
    webView.stopLoading();
    //清除整个应用中WebView网页访问留下的缓存
    webView.clearCache(true);
    //清除对应WebView访问的历史记录
    webview.clearHistory();
    //清除当前WebView自动完成填充的表单数据(并不会清除WebView存储到本地的数据)
    webview.clearFormData();

#二、常用的辅助类:WebSetting/

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Android WebView白屏问题可能有多个原因。其中一个原因是在Android 7.0及以上版本中,当打开二级页面跳转时,可能会出现空白。这是因为不同版本的系统WebViewClient的回调函数shouldOverrideUrlLoading方法中的loadurl参数可能是地址,也可能是对象。为了解决这个问题,可以根据不同版本的系统来加载URL地址。 另一个可能的原因是对某些标签的不支持导致白屏。为了解决这个问题,可以开启WebView的DOM存储功能,通过设置webSettings.setDomStorageEnabled(true)来解决。 此外,白屏问题还可能是由于Https证书问题导致的。如果网页链接使用的证书不被Android系统信任,就会出现白屏现象。解决方法是检查证书是否正确生成,并确保Android系统信任该证书。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Android问题笔记 - 解决WebView白屏空白的九种方案,AutoSize?](https://blog.csdn.net/qq_27489007/article/details/130028649)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Webview加载界面白屏解决方法总结](https://blog.csdn.net/qq_34584049/article/details/78280815)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Android WebView打开网页一片空白的解决方法](https://download.csdn.net/download/weixin_38528517/14916548)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值