WebView的用法详解
来源:互联网 发布:township数据同步 编辑:程序博客网 时间:2024/06/05 01:57
1、布局
<WebViewandroid:id="@+id/wv"android:layout_width="match_parent"android:layout_height="match_parent" />2、WebView加载网页
//加载网页链接mWebView.loadUrl("http://www.");//加载本地assets目录下的网页mWebView.loadUrl("file:///android_asset/demo.html");3、WebView基本设置
WebSettings settings = mWebView.getSettings();settings.setBuiltInZoomControls(true);// 显示缩放按钮(wap网页不支持)settings.setUseWideViewPort(true);// 支持双击缩放(wap网页不支持)settings.setJavaScriptEnabled(true);// 支持js功能4、设置WebViewClient
mWebView.setWebViewClient(new WebViewClient() {// 开始加载网页@Overridepublic void onPageStarted(WebView view, String url, Bitmap favicon) {super.onPageStarted(view, url, favicon);}// 网页加载结束@Overridepublic void onPageFinished(WebView view, String url) {super.onPageFinished(view, url);}// 所有链接跳转会走此方法@Overridepublic boolean shouldOverrideUrlLoading(WebView view, String url) {System.out.println("跳转链接:" + url);view.loadUrl(url);// 在跳转链接时强制在当前webview中加载//此方法还有其他应用场景, 比如写一个超链接<a href="tel:110">联系我们</a>, 当点击该超链接时,//可以在此方法中获取链接地址tel:110, 解析该地址,获取电话号码, 然后跳转到本地打电话页面, 而不是加载网页, 从而实现了webView和本地代码的交互return true;}});5、设置WebChromeClient
mWebView.setWebChromeClient(new WebChromeClient() {@Overridepublic void onProgressChanged(WebView view, int newProgress) {super.onProgressChanged(view, newProgress);// 进度发生变化System.out.println("进度:" + newProgress);}@Overridepublic void onReceivedTitle(WebView view, String title) {super.onReceivedTitle(view, title);// 网页标题System.out.println("网页标题:" + title);}});6、WebView加载上一页和下一页
mWebView.goBack();//跳到上个页面mWebView.goForward();//跳到下个页面mWebView.canGoBack();//是否可以跳到上一页(如果返回false,说明已经是第一页)mWebView.canGoForward();//是否可以跳到下一页(如果返回false,说明已经是最后一页)点击返回键,回到上一页
private long mStartTime;@Overridepublic void onBackPressed() {//点击返回键的时候if (mWebView.canGoBack()) {mWebView.goBack();} else {long currentTime = System.currentTimeMillis();if ((currentTime - mStartTime) < 2000) {this.finish();} else {mStartTime = System.currentTimeMillis();Toast.makeText(this, "再点击一次返回,则退出应用", Toast.LENGTH_SHORT).show();}}}7、缓存设置
cache-control是在请求网页时服务器的响应头,此响应头用于决定网页的缓存策略。
常见的取值有public(所有内容都将被缓存), private(内容只缓存到私有缓存中),no-cache(所有内容都不会被缓存),max-age=xxx(缓存的内容将在 xxx 秒后失效)等等
WebSettings settings = mWebView.getSettings();//只要本地有,无论是否过期,或者no-cache,都使用缓存中的数据settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);//只加载缓存settings.setCacheMode(WebSettings.LOAD_CACHE_ONLY);//根据cache-control决定是否从网络上取数据settings.setCacheMode(WebSettings.LOAD_DEFAULT);//不加载缓存settings.setCacheMode(WebSettings.LOAD_NO_CACHE);8、清理缓存
最简便的方式:mWebView.clearCache(true);另外一种方式://删除缓存文件夹File file = CacheManager.getCacheFileBaseDir(); if (file != null && file.exists() && file.isDirectory()) { for (File item : file.listFiles()) { item.delete(); } file.delete(); } //删除缓存数据库context.deleteDatabase("webview.db"); context.deleteDatabase("webviewCache.db");9、Cookie
//Cookie设置CookieSyncManager.createInstance(this);CookieManager cookieManager = CookieManager.getInstance();cookieManager.setAcceptCookie(true);String cookie = "name=xxx;age=18";cookieManager.setCookie(URL, cookie);CookieSyncManager.getInstance().sync();//获取CookieCookieManager cookieManager = CookieManager.getInstance();String cookie = cookieManager.getCookie(URL);//清除CookieCookieSyncManager.createInstance(context); CookieManager cookieManager = CookieManager.getInstance(); cookieManager.removeAllCookie();CookieSyncManager.getInstance().sync();
10、Js调用Android
WebSettings settings = mWebView.getSettings();settings.setJavaScriptEnabled(true);//开启jsmWebView.loadUrl("file:///android_asset/demo.html");//加载本地网页mWebView.setWebChromeClient(new WebChromeClient());//此行代码可以保证js的alert弹窗正常弹出//核心方法, 用于处理js被执行后的回调mWebView.addJavascriptInterface(new JsCallback() {@JavascriptInterface//注意:此处一定要加该注解,否则在4.1+系统上运行失败@Overridepublic void onJsCallback() {System.out.println("js调用Android啦");}}, "demo");//参1是回调接口的实现;参2是js回调对象的名称//定义回调接口public interface JsCallback {public void onJsCallback();}Js中:
<!-- Js调用Android代码 --><a onClick="window.demo.onJsCallback()">11、Android调用Js
//直接使用webview加载js就可以了mWebView.loadUrl("javascript:wave()");Js中
function wave() {alert("Android调用Js啦");}
最后附上android和js交互demo
0 0
- WebView的用法详解
- WebView用法详解
- iOS WebView的用法
- WebView的用法
- WebView的简单用法
- webView的用法整理
- Android---webview的用法
- WebView的高级用法
- WebView的用法
- WebView的用法
- WebView 的用法
- webview的用法
- WebView的一些用法
- iOS WebView的用法
- webView的用法
- webView的高级用法
- WebView的一些用法
- iOS WebView的用法
- 欢迎使用CSDN-markdown编辑器
- JavaBean
- 把排序数组转换为高度最小的二叉搜索树
- Add Strings
- java基础巩固----内省和BeaUtils
- WebView的用法详解
- 捷联惯导算法心得
- Codeforces 61B【怪在读题】
- 6000 枚Material Design风格的 icon图标下载
- 继承
- Apache+PHP+Python(Django框架)搭建成功
- Unity3D中网格合并示例研究
- JSP开发中的分层模式
- 网易视频云郭再荣:视频云服务的未来在于场景化