WebView的使用记录
来源:互联网 发布:科比2008奥运会数据 编辑:程序博客网 时间:2024/05/19 16:29
最近要做一个WebView加载网页的需求,就用之前用到的WebView,将原来的代码拿过来更换了一下请求的url,打算直接用就可以了,可是url加进去之后却加载不出页面。但是在网页端和iOS端都可以加载出来,而且我换个url就可以了。这就有点尴尬了,之前的url可以,现在换一个url就不行了,但是网页和iOS都可以加载出来,所以我就认为应该是我对WebView的设置有问题。于是,我就去搜关于这个问题的解决方法,想看看之前有没有人遇到过这种情况。开始找了几个跟我出现问题差不多的解决方法,可是修改之后还是加载不出来,我就再去搜索,终于找到了问题的解决方法。
果然,是我的WebView的设置问题,在得到WebSettings之后,需要设置一个settings.setDomStorageEnable(true),这个设置的意思是设置可以使用本地存储,在设置上这个属性之后,页面就加载成功了。
在这里除了记录一下这个问题之外,我又将WebView的使用做了一个简单的总结,以便日后使用。
WebView主要的三大块:
1.WebSettings
WebSettings的作用是对WebView进行配置和管理
注意:使用WebView加载页面需要在AndroidManifest.xml中添加网络权限
<uses-permission android:name="android.permission.INTERNET"/>
1.1 如果访问的页面中要与JavaScript交互,则webview必须支持JavaScript
webSettings.setJavaScriptEnabled(true);
1.2 支持插件,需要设置
webSettings.setPluginsEnabled(true);
1.3 设置自适应屏幕,需要下面两个设置
webSettings.setUseWideViewPort(true);//将图片调整到适合webview的大小
webSettings.setLoadWithOverviewMode(true);//适应屏幕大小
1.4 页面可以缩放,需要设置
webSettings.setSupportZoom(true);
webSettings.setBuiltInZoomControls(true);
1.5 隐藏原生缩放控件
webSettings.setDisplayZoomControls(false);
1.6 不使用缓存
webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);
1.7 可以访问文件
webSettings.setAllowFileAccess(true);
1.8 支持JS打开新窗口
webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
1.9 支持自动加载图片
webSettings.setLoadsImagesAutomatically(true);
1.10 设置编码格式
webSettings.setDefaultTextEncodingName("utf-8");
1.11 开启DOM storage API功能
webSettings.setDomStorageEnabled(true);
1.12 开启database storage API功能
webSettings.setDatabaseEnabled(true);
1.13 开启Application Cache功能
webSettings.setAppCacheEnabled(true);
2.WebViewClient
2.1 shouldOverrideUrlLoading()
作用是打开网页时,不调用系统浏览器,而是在本WebView中显示
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return false;
}
};
2.2 onPageStarted()
开始载入页面的调用,可以在此时显示一个加载中的进度条
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
pb_loading_fragment.setVisibility(View.VISIBLE);
}
};
2.3 onPageFinished()
加载页面结束时调用,可以在此时关闭进度条的显示
wv_found.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
pb_loading_fragment.setVisibility(View.GONE);
}
});
2.4 onLoadResource()
在加载页面资源的时候调用,任何一个资源的加载都会调用,例如一张图片的加载
webView.setWebViewClient(new WebViewClient(){
@Override
public boolean onLoadResource(WebView view, String url) {
//设定加载资源的操作
}
});
2.5 onReceivedError()
在加载页面出错时会调用
2.6 onReceivedSslError()
处理https请求
3.WebChromeClient
3.1 onProgressChanged()
获取加载进度,常用与设置进度条
3.2 onReceivedTitle()
获取webView页中的标题
Learning
- WebView的使用记录
- 关于使用webview的一些记录
- 记录使用Android WebView碰到的问题
- Android使用WebView的一些记录
- android webview使用记录
- android 关于使用webView的一些问题记录
- RN的webview使用问题记录, 待解决
- 记录Android webView 的一点点
- webview记录
- Android WebView的使用
- 浅谈WebView的使用
- WebView的使用
- Android WebView的使用
- WebView的使用
- WebView的使用
- Android-WebView的使用
- 浅谈WebView的使用
- android webview的使用
- 单例-双重检查锁定与延迟初始化
- pyspider 爬虫教程(二)
- opencv手势识别
- 自己优化的ScrollView案例 UIWndSocietyPlayer
- 删除qq接收到的png格式图片
- WebView的使用记录
- Spring-Boot Log4j配置文件
- 2017.12.22 第十二天-修复报修时间轴问题
- 虚拟化技术基础
- 配置中心,互联网架构解耦利器
- JUnit 单元测试
- 01.Spring源码深度解析之IDEA源码阅读环境搭建
- 练习1
- 一列数字的规则如下;1,1,2,3,5,8,13,21,34........ 求第30位数字是多少,用递规和非递归两种方法算法实现