Android 中 java 与 webview 的交互 - - ITeye技术网站

Android 中 java 与 webview 的交互

Java Android webkit JavaScript UI android 的webkit的api的开放程度还是非常不错,java可以和webview内的javascript很好的交互。下面的小例子可以说明这一点。



先看我们的html文档:




Html代码
  1. <html>
  2. <scriptlanguage="javascript">
  3. /*Thisfunctionisinvokedbytheactivity*/
  4. functionwave(){
  5. alert("1");
  6. document.getElementById("droid").src="android_waving.png";
  7. alert("2");
  8. }
  9. </script>
  10. <body>
  11. <!--Callsintothejavascriptinterfacefortheactivity-->
  12. <aonClick="window.demo.clickOnAndroid()"><divstyle="width:80px;
  13. margin:0pxauto;
  14. padding:10px;
  15. text-align:center;
  16. border:2pxsolid#202020;">
  17. <imgid="droid"src="android_normal.png"/><br>
  18. Clickme!
  19. </div></a>
  20. </body>
  21. </html>




再看我们的java 代码。


Java代码
  1. publicclassWebViewDemoextendsActivity{
  2. privatestaticfinalStringLOG_TAG="WebViewDemo";
  3. privateWebViewmWebView;
  4. privateHandlermHandler=newHandler();
  5. @Override
  6. publicvoidonCreate(Bundleicicle){
  7. super.onCreate(icicle);
  8. setContentView(R.layout.main);
  9. mWebView=(WebView)findViewById(R.id.webview);
  10. WebSettingswebSettings=mWebView.getSettings();
  11. webSettings.setSavePassword(false);
  12. webSettings.setSaveFormData(false);
  13. webSettings.setJavaScriptEnabled(true);
  14. webSettings.setSupportZoom(false);
  15. mWebView.setWebChromeClient(newMyWebChromeClient());
  16. mWebView.addJavascriptInterface(newDemoJavaScriptInterface(),"demo");
  17. mWebView.loadUrl("file:///android_asset/demo.html");
  18. }
  19. finalclassDemoJavaScriptInterface{
  20. DemoJavaScriptInterface(){
  21. }
  22. /**
  23. *ThisisnotcalledontheUIthread.Postarunnabletoinvoke
  24. *loadUrlontheUIthread.
  25. */
  26. publicvoidclickOnAndroid(){
  27. mHandler.post(newRunnable(){
  28. publicvoidrun(){
  29. mWebView.loadUrl("javascript:wave()");
  30. }
  31. });
  32. }
  33. }
  34. /**
  35. *Providesahookforcalling"alert"fromjavascript.Usefulfor
  36. *debuggingyourjavascript.
  37. */
  38. finalclassMyWebChromeClientextendsWebChromeClient{
  39. @Override
  40. publicbooleanonJsAlert(WebViewview,Stringurl,Stringmessage,JsResultresult){
  41. Log.d(LOG_TAG,message);
  42. result.confirm();
  43. returntrue;
  44. }
  45. }
  46. }




WebView 的addJavascriptInterface函数就可以实现彼此的交互。

更多相关文章

  1. Android 内核源代码交叉编译
  2. [转]Android DNS 代码分析
  3. 哪里可以下载Android的源代码
  4. 第一章 开始启程,你的第一行Android代码
  5. Android中图像变换Matrix的原理、代码验证和应用
  6. android boot 代码流程

随机推荐

  1. [置顶] 《Android 之美 从0到1 -- 高手之
  2. 谷歌 Android“开源“神话走向破灭
  3. android中异步加载网络图片
  4. Cheatsheet: 2012 10.01 ~ 10.07
  5. Android(安卓)SDK的默认目录导致的AVD启
  6. 关于Android 版本向下兼容
  7. 适用于Android的OpenSL ES指南-OpenSL ES
  8. android蓝牙BLE(四) —— 实战
  9. Android中Javascript中的调用
  10. Android学习之路(二)之 我的第一个Android