WebView
来源:互联网 发布:爱数数据备份 编辑:程序博客网 时间:2024/06/16 17:58
WebView:Android的app加载网页
访问互联网:注意添加网络权限 <uses-permission android:name="android.permission.INTERNET"/>
1.WebView的使用:(网上的博客总结网址 http://liangruijun.blog.51cto.com/3061169/647456)
方法一: 1.在布局文件XML中声明WebView 2.在Activity中实例化WebView 3.调用WebView的loadUrl( )方法,设置WebView要显示的网页 互联网用:webView.loadUrl("http://www.google.com"); 本地文件用:webView.loadUrl("file:///android_asset/XX.html"); 本地文件存放在:assets 文件中 4.为了让WebView能够响应超链接功能,调用setWebViewClient( )方法,设置 WebView视图 5.用WebView点链接看了很多页以后为了让WebView支持回退功能,需要覆盖覆盖Activity类的onKeyDown()方法, 如果不做任何处理,点击系统回退键,整个浏览器会调用finish()而结束自身,而不是回退到上一页面 6.需要在AndroidManifest.xml文件中添加权限,否则出现Web page not available错误。 <uses-permission android:name="android.permission.INTERNET"/>方法二: 1.在要Activity中实例化WebView组件:WebView webView = new WebView(this); 2.调用WebView的loadUrl()方法,设置WebView要显示的网页: 互联网用:webView.loadUrl("http://www.google.com"); 本地文件用:webView.loadUrl("file:///android_asset/XX.html"); 本地文件存放在:assets 文件中 3.调用Activity的setContentView( )方法来显示网页视图 4.用WebView点链接看了很多页以后为了让WebView支持回退功能,需要覆盖Activity类的onKeyDown()方法, 如果不做任何处理,点击系统回退键,整个浏览器会调用finish()而结束自身,而不是回退到上一页面 5.需要在AndroidManifest.xml文件中添加权限,否则会出现Web page not available错误。 <uses-permission android:name="android.permission.INTERNET" />
2.WebView的常用方法:
(1)webView通过loadData的方式加载html标签: 该方法只支持英文,不支持其他语言 /** * data:字符串和标签("<form>密码<input type = 'text' name = ''></form>") * mimeType:格式(数据文本类型 "text/html") * encoding:编码格式(一般为"UTF-8") */ webView.loadData(data, mimeType, encoding);(2)webView通过loadDataWithBaseURL的方式加载html标签: 该方法支持中文 /** * baseUrl:设置为null * data:字符串和标签("<form>密码<input type = 'text' name = ''></form>") * mimeType:格式(数据文本类型 "text/html") * encoding:编码格式(一般为"UTF-8") * historyUrl:设置为null */ webView.loadDataWithBaseURL(baseUrl, data, mimeType, encoding, historyUrl);(3)使用WebView.loadUrl的方式加载本地html的文件或者网址 加载本地的文件:(本地文件放在assets文件夹中) webView.loadUrl("file:///android_asset/login.html");//注意是asset不是assets 加载网址: webView.loadUrl("http://www.baidu.com"); 加载JS(Java向js传值) webView.loadUrl("javascript:funcInJs('这是从java传过来的值')"); funcInJs:js中的函数名(function 函数名) funcInJs('这是从java传过来的值'):()中为java传给前端页面的值(3)设置webView支持js webView.getSettings().setJavaScriptEnabled(true);(4)让我们自己的WebView充当打开新网页的客户端 webView.setWebViewClient(new WebViewClient()); (5)WebView设置支持Chrome浏览器 //避免网页的js代码没有加载完成,就调用了js方法,解决办法 webView.setWebChromeClient(new WebChromeClient(){ /** * 对js中alert进行拦截 */ @Override public boolean onJsAlert(WebView view, String url, String message, JsResult result) { result.confirm();//确认 Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show(); //return true对弹出框完全拦截并且已经消费掉 //super.onJsAlert(view, url, message, result) return true; } });(6)按返回键返回上一页,而不是返回第一页 重写onKeyDown()方法 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // 如果按下返回键,&& WebView.canGoBack if(keyCode == event.KEYCODE_BACK && webView.canGoBack()){ webView.goBack(); return true; } return super.onKeyDown(keyCode, event); }
3.WebView支持JS
(1)网页中JS调用java代码(在JS和Android代码间绑定一个新的接口) //javaNativeInterface 与js代码一样 webView.addJavascriptInterface(this, "javaNativeInterface"); //@JavascriptInterface 注解API17后必须写,callbackInJava与js代码中一样 @JavascriptInterface public void callbackInJava(final String stringFromJs ){ Toast.makeText(getApplicationContext(), stringFromJs, Toast.LENGTH_SHORT).show(); } 【js代码: var oDiv = document.getElementById("oDiv"); oDiv.onclick = function(){ //接口名.方法名 javaNativeInterface.callbackInJava("我是从js来的"); } 】(2)java代码调用网页中JS代码(向JS传值) webView.loadUrl("javascript:funcInJs('这是从java传过来的值')"); ()中为要传的参数,可为空 funcInJs JS中的函数名 【 function funcInJs(str) { var msg = document.getElementById("msg"); msg.innerHTML = str; } 】
0 0
- WebView
- WebView
- WebView
- webView
- webView
- webview
- webview
- WebView
- webview
- webview
- webview
- WebView
- webView
- webview
- webView
- webview
- WebView
- WebView
- (转)作为一个新人,怎样学习嵌入式Linux?(韦东山)
- SQL实现表名更改,列名更改,约束更改
- extjs里(function(){Ext.onReady(function(){});})();为什么要这么写
- Xgboost + python Win7 安装
- <java>使用三种循环方式输出九九乘法表
- WebView
- Scanner
- Salesforce开发工具之Metaforce - 开发工具大集合
- VC中如何将文件保存为EXCEL格式(CSpreadSheet)
- css不定宽块级元素居中方法一
- 16,你好!
- mySQL相关函数的使用
- (function(){})();和Ext.onReady()的区别
- 字体图标使用总结