webView---------js 与 WebView 交互

引用:http://www.iteye.com/topic/456846

Html代码  收藏代码
  1. <html>  
  2.     <script language="javascript">  
  3.         /* This function is invoked by the activity */  
  4.         function wave() {  
  5.             alert("1");  
  6.             document.getElementById("droid").src="android_waving.png";  
  7.             alert("2");  
  8.         }  
  9.     </script>  
  10.     <body>  
  11.         <!-- Calls into the javascript interface for the activity -->  
  12.         <a onClick="window.demo.clickOnAndroid()"><div style="width:80px;  
  13.             margin:0px auto;  
  14.             padding:10px;  
  15.             text-align:center;  
  16.             border:2px solid #202020;" >  
  17.                 <img id="droid" src="android_normal.png"/><br>  
  18.                 Click me!  
  19.         </div></a>  
  20.     </body>  
  21. </html>  



再看我们的java 代码。 

Java代码  收藏代码
  1. public class WebViewDemo extends Activity {  
  2.   
  3.     private static final String LOG_TAG = "WebViewDemo";  
  4.   
  5.     private WebView mWebView;  
  6.   
  7.     private Handler mHandler = new Handler();  
  8.   
  9.     @Override  
  10.     public void onCreate(Bundle icicle) {  
  11.         super.onCreate(icicle);  
  12.         setContentView(R.layout.main);  
  13.         mWebView = (WebView) findViewById(R.id.webview);  
  14.   
  15.         WebSettings webSettings = mWebView.getSettings();  
  16.         webSettings.setSavePassword(false);  
  17.         webSettings.setSaveFormData(false);  
  18.         webSettings.setJavaScriptEnabled(true);  
  19.         webSettings.setSupportZoom(false);  
  20.   
  21.         mWebView.setWebChromeClient(new MyWebChromeClient());  
  22.   
  23.         mWebView.addJavascriptInterface(new DemoJavaScriptInterface(), "demo");  
  24.   
  25.         mWebView.loadUrl("file:///android_asset/demo.html");  
  26.     }  
  27.   
  28.     final class DemoJavaScriptInterface {  
  29.   
  30.         DemoJavaScriptInterface() {  
  31.         }  
  32.   
  33.         /** 
  34.          * This is not called on the UI thread. Post a runnable to invoke 
  35.          * loadUrl on the UI thread. 
  36.          */  
  37.         public void clickOnAndroid() {  
  38.             mHandler.post(new Runnable() {  
  39.                 public void run() {  
  40.                     mWebView.loadUrl("javascript:wave()");  
  41.                 }  
  42.             });  
  43.   
  44.         }  
  45.     }  
  46.   
  47.     /** 
  48.      * Provides a hook for calling "alert" from javascript. Useful for 
  49.      * debugging your javascript. 
  50.      */  
  51.     final class MyWebChromeClient extends WebChromeClient {  
  52.         @Override  
  53.         public boolean onJsAlert(WebView view, String url, String message, JsResult result) {  
  54.             Log.d(LOG_TAG, message);  
  55.             result.confirm();  
  56.             return true;  
  57.         }  
  58.           
  59.     }  
posted @ 2011-09-26 13:51  镇水古月  阅读(349)  评论(0编辑  收藏  举报