ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Android中webview的相关知识点

2021-08-03 17:04:39  阅读:179  来源: 互联网

标签:知识点 缓存 网页 触发 设置 Android 加载 webview 页面


webview是Android中用来加载网页的一个组件。有一定开发基础的Android程序员应该都是很熟悉这个组件的。有时候我们可能直接使用webview,有时候我们喜欢使用类似AgentWeb之类的三方框架。这里我总结一下webview的一些相关常用方法。今后不论怎么使用webview,这些常用方法都是必不可少的。

1.webview的常用方法

  • loadUrl:加载指定的URL,URL可以是HTTP打头的 外部网址,也可以是file打头的资产网页。
  • getSettings:获取浏览器的网页设置信息。返回一个网页设置WebSettings对象。
  • addJavascriptInterface:添加供JavaScript调用的App接口。
  • setWebViewClient:设置网页视图的网页浏览客户端WebViewClient,如果已调用loadUrl方法,就必须同时调用本方法。
  • setWebChromeClient:设置浏览器的网页交互客户端WebChromeClient。
  • setDownloadListener:设置文件下载监听器DownloadListener。
  • loadData:加载文本数据。第二个参数表示媒体类型,如text/html;第三个参数表示数据的编码格式,如base64表示采用BASE64编码,其余值(包括null)表示URL编码。
  • canGoBack:判断页面能否返回。
  • goBack:返回上一个页面。
  • canGoForward:判断页面能否前进。
  • goForward:前进到下一个页面。
  • reload:重新加载页面。
  • stopLoading:停止加载页面。

2.webSettings的常用方法

<1>基本的加载设置

  • setLoadsImagesAutomatically:设置是否自动加载图片。如果设置为false,就表示无图模式。
  • setDefaultTextEncodingName:设置默认的文本编码,如UTF-8、GBK等。
  • setJavaScriptEnabled:设置是否支持JavaScript。
  • setJavaScriptCanOpenWindowsAutomatically:设置是否允许JavaScript自动打开新窗口,即JS的window.open方法是否适用。

<2>与网页适配有关的设置

  • setSupportZoom:设置是否支持页面缩放。
  • setBuiltInZoomControls:设置是否出现缩放工具。
  • setUseWideViewPort:当容器超过页面大小时,是否将页面放大到塞满容器宽度的尺寸。
  • setLoadWithOverviewMode:当页面超过容器大小时,是否将页面缩小到容器能够装下的尺寸。
  • setLayoutAlgorithm:设置自适应屏幕的算法,一般是LayoutAlgorithm.SINGLE_COLUMN。如果不设置,Android4.2.2及之前的版本就可能出现表格错乱的情况。

<3>与存储有关的设置

  • setAppCacheEnabled:设置是否启用App缓存。
  • setAppCachePath:设置App缓存文件的路径。
  • setAllowFileAccess:设置是否允许访问文件,如WebView访问SD卡的文件。
  • setDatabaseEnabled:设置是否启用数据库。
  • setDomStorageEnabled:设置是否启用本地存储。
  • setCacheMode:设置使用的缓存模式。缓存模式的取值见下表
WebSettings类的缓存模式说明
LOAD_CACHE_ELSE_NETWORK优先使用缓存
LOAD_NO_CACHE不使用缓存
LOAD_CACHE_ONLY只使用缓存

3.webViewClient的常用方法

  • onPageStarted:页面开始加载时触发。可在此弹出进度对话框ProgressDialog。
  • onPageFinished:页面加载结束时触发。可在此关闭进度对话框。
  • onReceivedError:收到错误信息时触发。
  • onReceivedSslError:收到SSL错误时触发。
  • shouldOverrideUrlLoading:发生网页跳转时触发。重写该方法的目的是判断每当点击网页中的链接时,是想在当前的网页视图里跳转还是跳转到系统自带的浏览器。
public boolean shouldOverrideUrlLoading(WebView view, String url) {
    view.loadUrl(url);
    return true;
}

这里也可以选择让他跳转一个我们封装好的WebView页面,把地址传入,仿原生跳转。 

4.webChromeClient的常用方法

  • onReceivedTitle:收到页面标题时触发。
  • onProgressChanged:页面加载进度发生变化时触发。可在此刷新进度对话框的进度条。
  • onJsAlert:网页的JS代码调用alert方法时触发。可在此弹出自定义的提示对话框。
  • onJsConfirm:网页的JS代码调用confirm方法时触发。可在此弹出自定义的确认对话框。
  • onJsPrompt:网页的JS代码调用prompt方法时触发。可在此弹出自定义的提示对话框。
  • onGeolocationPermissionsShowPrompt:网页请求定位权限时触发。可在此弹出一个确认对话框,提示用户是否允许网页获得定位权限。如果不想出现弹框就允许网页获得权限。
webView.setWebChromeClient(new WebChromeClient(){
    @Override
    public void onGeolocationPermissionsShowPrompt(String origin,GeolocationPermissions.Callback callback) {
        //不弹框允许网页获得定位权限
        callback.invoke(origin,true,false);
        super.onGeolocationPermissionsShowPrompt(origin, callback);
    }
});

5.DownloadListener的常用方法

  • onDownloadStart:文件开始下载触发。可在此接管下载动作,比如设置文件下载的方式,文件的保存路径等。

标签:知识点,缓存,网页,触发,设置,Android,加载,webview,页面
来源: https://blog.csdn.net/weixin_38322371/article/details/119350958

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有