必知必会 | WebView 的一切都在这儿
文章较长,且大部分说明包含在注释中,建议收藏后慢慢看~
1
目录
相关API
1.1. 相关类介绍
1.2. WebView
1.3. WebSettings
1.4. WebViewClient
1.5. WebChromeClient
2.回调顺序
3.视口(viewport)
4.管理 Cookies
5.缓存(Cache)
6.预加载(Preload)
6.与Javascript交互
8.地理位置(Geolocation)
9.弹框(alert/confirm/prompt/onbeforeunload)
10.全屏(Fullscreen)
- 内存泄漏
12.参考
2
相关API
相关类介绍
WebResourceRequest 添加于API21,封装了一个Web资源的请求信息,包含:请求地址,请求方法,请求头,是否主框架,是否用户点击,是否重定向
WebResourceResponse 封装了一个Web资源的响应信息,包含:响应数据流,编码,MIME类型,API21后添加了响应头,状态码与状态描述
WebResourceError 添加于API23,封装了一个Web资源的错误信息,包含错误码和描述
CookieManager 管理用于WebView的cookies。。
WebViewDatabase 存储与管理以下几类浏览数据:
表单自动填充的的用户名与密码
HTTP认证的用户名与密码
曾经输入过的文本(比如自动完成)
WebStorage 用于管理WebView提供的JS存储API,比如Application Cache API,Web SQL Database API,HTML5 Web Storage API
GeolocationPermissions 用于管理WebView的JS Geolocation API
HttpAuthHandler 表示一个HTTP认证请求,提供了方法操作(proceed/cancel)请求
SslErrorHandler 表示一个处理SSL错误的请求,提供了方法操作(proceed/cancel)请求
ClientCertRequest 表示一个证书请求,提供了方法操作(proceed/cancel/ignore)请求
JsResult 用于处理底层JS发起的请求,为客户端提供一些方法指明应进行的操作,比如确认或取消。
WebView
基本
// 获取当前页面的URL
public String getUrl();
// 获取当前页面的原始URL(重定向后可能当前url不同)
// 就是http headers的Referer参数,loadUrl时为null
public String getOriginalUrl();
// 获取当前页面的标题
public String getTitle();
// 获取当前页面的favicon
public Bitmap getFavicon();
// 获取当前页面的加载进度
public int getProgress();
// 通知WebView内核网络状态
// 用于设置JS属性window.navigator.isOnline
和产生HTML5事件online/offline
public void setNetworkAvailable(boolean networkUp)
// 设置初始缩放比例
public void setInitialScale(int scaleInPercent);
加载网页
// 加载URL指定的网页
public void loadUrl(String url);
// 携带http headers加载URL指定的网页
public void loadUrl(String url, Map