WebView初探
来源:互联网 发布:简述网络层的功能 编辑:程序博客网 时间:2024/06/13 00:39
http://www.javaeye.com/topic/376674
从WebView初探了解到WebView的强大,。听说WebView对Javascript的支持也很强,想从网上找些例子,还很难找,最终从google老家找了一个Java和Javascript互调的例子,当时看了,下巴“咣当”就掉在地上了,太强了!这样也行?
整个Eclipse ADT工程例子中都有,这里重点分析一下代码:
- public
class WebViewDemo extendsActivity { -
WebView mWebView; -
Handler newmHandler = Handler(); -
-
void onCreate(Bundle icicle) { -
-
setContentView(R.layout.webviewdemo); -
mWebView = (WebView) findViewById(R.id.webview); -
WebSettings webSettings = mWebView.getSettings(); -
webSettings.setJavaScriptEnabled( -
mWebView.addJavascriptInterface( Object() { -
void clickOnAndroid() { -
mHandler.post( Runnable() { -
void run() { -
mWebView.loadUrl( -
} -
}); -
} -
}, -
mWebView.loadUrl( -
} - }
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,StringinterfaceName)方法,该方法将一个java对象绑定到一个javascript对象中,javascript对象名就是interfaceName,作用域是Global。这样初始化webview后,在webview加载的页面中就可以直接通过javascript:window.demo访问到绑定的java对象了。来看看在html中是怎样调用的:
- <html>
-
language="javascript"> -
function wave() { -
document.getElementByIdx("droid") -
} -
-
-
onClick="window.demo.clickOnAndroid()"> -
id="droid" src="android_normal.png"/><br> -
Click me! -
-
- </html>
<html> <script language="javascript"> function wave() { document.getElementByIdx("droid").src="android_waving.png"; } </script> <body> <a onClick="window.demo.clickOnAndroid()"> <img id="droid" src="android_normal.png"/><br> Click me! </a> </body></html>
这里还有几个知识点:
1)为了让WebView从apk文件中加载assets,AndroidSDK提供了一个schema,前缀为"file:///android_asset/"。WebView遇到这样的schema,就去当前包中的assets目录中找内容。如上面的"file:///android_asset/demo.html"
2)addJavascriptInterface方法中要绑定的Java对象及方法要运行另外的线程中,不能运行在构造他的线程中,这也是使用Handler的目的。
- WebView初探
- WebView初探
- WebView初探
- WebView初探
- WebView 初探
- Android-WebView初探
- android webview初探
- spring对android的webview支持初探
- Android网络编程之WebView初探
- Android WebView 与js交互初探
- android网络初探--WebView的使用
- Hybrid App 开发初探:使用 WebView 装载页面
- 初探
- WebView
- WebView
- WebView
- webView
- webView
- Java的内存泄漏
- 个人开公司的流程
- Android开发精华教程
- 自定义Android组件之带图像的TextV…
- Android数据库总结
- WebView初探
- android 软件apk
- 关于j2me中RMS的大小限制
- 第十六周项目4:为动态数组扩容
- android画图-----shape的使用文档…
- 关于经验
- lambda表达式之实践篇
- 程序设计学习与总结1
- 开发适应中国网络的J2ME连网程序