Android--WebView组件
来源:互联网 发布:整人锁屏软件 编辑:程序博客网 时间:2024/06/06 03:21
WebView组件
Overview
在Android手机中内置了一款共性能的webkit内核浏览器,在SDK中封装为一个叫做WebView组件
Notice:
1.AndroidManifest.xml中必须使用许可“android.permission.INTERNET”否则出现Web page not available 错误。
2.如果访问的页面中有Javascript,则webview必须设置支持Javascript。
For Example:
webview.getSetting().setJavaScriptEnabled(true);
3.如果页面中有连接,如果希望点击连接继续在当前Browser中相应,而不是新开Android系统中的Browser中响应链接,必须覆盖webview的WebViewClient对象。
4.如果不做任何处理,浏览网页,点击系统的“Back”键,整个Browser会调用finish()而结束自身,如果希望浏览网页回退而不是退出浏览器,需要在当前Activity中处理并且消除Back事件。
android中webview是如何支持javascripte自定义对象?
在w3c标准中js有 window,history,document等标准对象,同样我们可以在开发浏览器时自己定义我们的对象调用手机系统功能来处理,这样使用js就可以 为所欲为了。
For Example
addJavascriptInterface(Object obj,String interfaceName)方法,该方法将一个java对象绑定到一个javascript对象中,javascript对象名就是 interfaceName(demo),作用域是Global。这样初始化webview后,在webview加载的页面中就可以直接通过 javascript:window.demo访问到绑定的java对象了。来看看在html中是怎样调用的。
For Example
这样在javascript中就可以调用java对象的clickOnAndroid()方法了,同样我们可以在此对象中定义很多方法(比 如发短信,调用联系人列表等手机系统功能。),这里wave()方法是java中调用javascript的例子。
这里还有几个知识点:
1)为了让WebView从apk文件中加载assets,Android SDK提供了一个schema,前缀为"file:///android_asset/"。WebView遇到这样的schema,就去当前包中的 assets目录中找内容。如上面的"file:///android_asset/demo.html"
2)addJavascriptInterface方法中要绑定的Java对象及方法要运行另外的线程中,不能运行在构造他的线程中,这也是使用 Handler的目的。
Overview
在Android手机中内置了一款共性能的webkit内核浏览器,在SDK中封装为一个叫做WebView组件
Notice:
1.AndroidManifest.xml中必须使用许可“android.permission.INTERNET”否则出现Web page not available 错误。
2.如果访问的页面中有Javascript,则webview必须设置支持Javascript。
For Example:
webview.getSetting().setJavaScriptEnabled(true);
3.如果页面中有连接,如果希望点击连接继续在当前Browser中相应,而不是新开Android系统中的Browser中响应链接,必须覆盖webview的WebViewClient对象。
For Example:
mWebView.setWebViewClient( new WebViewClient(){public boolean shouldOverrideUrlLoading(WebView view , String url){view.loadUrl(url);return true;}});
4.如果不做任何处理,浏览网页,点击系统的“Back”键,整个Browser会调用finish()而结束自身,如果希望浏览网页回退而不是退出浏览器,需要在当前Activity中处理并且消除Back事件。
public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) { mWebView.goBack(); return true; } return super.onKeyDown(keyCode, event); }
android中webview是如何支持javascripte自定义对象?
在w3c标准中js有 window,history,document等标准对象,同样我们可以在开发浏览器时自己定义我们的对象调用手机系统功能来处理,这样使用js就可以 为所欲为了。
For Example
public class WebViewDemo extends Activity { private WebView mWebView; private Handler mHandler = new Handler(); public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.webviewdemo); mWebView = (WebView) findViewById(R.id.webview); WebSettings webSettings = mWebView.getSettings(); webSettings.setJavaScriptEnabled(true); mWebView.addJavascriptInterface(new Object() { public void clickOnAndroid() { mHandler.post(new Runnable() { public void run() { mWebView.loadUrl("javascript:wave()"); } }); } }, "demo"); mWebView.loadUrl("file:///android_asset/demo.html"); } }
addJavascriptInterface(Object obj,String interfaceName)方法,该方法将一个java对象绑定到一个javascript对象中,javascript对象名就是 interfaceName(demo),作用域是Global。这样初始化webview后,在webview加载的页面中就可以直接通过 javascript:window.demo访问到绑定的java对象了。来看看在html中是怎样调用的。
For Example
<html> <mce:script language="javascript"><!-- function wave() { document.getElementById("droid").src="android_waving.png"; } // --></mce:script> <body> <a onClick="window.demo.clickOnAndroid()"> <img id="droid" src="android_normal.png" mce_src="android_normal.png"/><br> Click me! </a> </body> </html>
这样在javascript中就可以调用java对象的clickOnAndroid()方法了,同样我们可以在此对象中定义很多方法(比 如发短信,调用联系人列表等手机系统功能。),这里wave()方法是java中调用javascript的例子。
这里还有几个知识点:
1)为了让WebView从apk文件中加载assets,Android SDK提供了一个schema,前缀为"file:///android_asset/"。WebView遇到这样的schema,就去当前包中的 assets目录中找内容。如上面的"file:///android_asset/demo.html"
2)addJavascriptInterface方法中要绑定的Java对象及方法要运行另外的线程中,不能运行在构造他的线程中,这也是使用 Handler的目的。
- Android 之 WebView 组件
- Android--WebView组件
- android之【 WebView组件 】
- Android中的WebView组件安全
- Android中的WebView组件安全
- android webview组件的使用
- WebView---android webview组件如何使用 Webview与js交互
- WebView---android webview组件如何使用 Webview与js交互
- Android学习 - WebView组件的使用详解
- Android webkit 浏览器开发-- WebView组件学习
- Android中的WebView组件与JavaScript交互
- 利用Android WebView 组件加载网页
- WebView组件
- Android——WebView组件的使用详解
- Android——WebView组件的使用详解
- Android——WebView组件的使用详解
- Android——WebView组件的使用详解
- Android开发之WebView组件的使用详解
- 多级分类gem: awesome_nested_set
- libcurl链接库未导出符号的错误
- C语言中--字符串相关--的重要函数
- windows与linux换行符问题 .
- linux shell 字符串操作(长度,查找,替换)详解
- Android--WebView组件
- oracle cluster(簇)的简单使用
- linux read 用法 .
- Class org.apache.struts2.json.JSONWriter can not access a member of *
- malloc/free 跟new/delete的区别
- 骨骼动画入门----BVH文件的载入和播放
- PHP学习之四:类与对象
- Java基础之进制转换(图解)
- 常用的Mysql命令大全