Android 台灣中文網

標題: Android中webview和js之間的交互 [打印本頁]

作者: 暗桌之光    時間: 2011-7-24 15:59
標題: Android中webview和js之間的交互
1.android中利用webview調用網頁上的js代碼。
Android 中可以通過webview來實現和js的交互,在程式中調用js代碼,只需要將webview控件的支持js的屬性設定為true,,然後通過loadUrl就可以直接進行調用,如下所示:
  1. mWebView.getSettings().setJavaScriptEnabled(true);
  2. mWebView.loadUrl("javascript:test()");
複製代碼
2. 網頁上調用android中java代碼的方法
在網頁中調用java代碼,需要在webview控件中添加javascriptInterface。如下所示:
  1. mWebView.addJavascriptInterface(new Object() {
  2.             public void clickOnAndroid() {
  3.                 mHandler.post(new Runnable() {
  4.                     public void run() {
  5.                         Toast.makeText(Test.this, "測試調用java", Toast.LENGTH_LONG).show();
  6.                     }
  7.                 });
  8.             }
  9.         }, "demo");
複製代碼
在網頁中,只需要像調用js方法一樣,進行調用就可以
  1. <div id='b'><a onclick="window.demo.clickOnAndroid()">b.c</a></div>
複製代碼
3. Java代碼調用js並傳參
首先需要帶參數的js函數,如function test(str),然後只需在調用js時傳入參數即可,如下所示:
  1. mWebView.loadUrl("javascript:test('aa')");
複製代碼
4.Js中調用java函數並傳參
首先一樣需要帶參數的函數形式,但需注意此處的參數需要final類型,即得到以後不可修改,如果需要修改其中的值,可以先設定中間變量,然後進行修改。如下所示:
  1. mWebView.addJavascriptInterface(new Object() {
  2.             public void clickOnAndroid(final int i) {
  3.                 mHandler.post(new Runnable() {
  4.                     public void run() {
  5.                                 int j = i;
  6.                                 j++;
  7. Toast.makeText(Test.this, "測試調用java" + String.valueOf(j), Toast.LENGTH_LONG).show();
  8.                     }
  9.                 });
  10.             }
  11.         }, "demo");
複製代碼
然後在html頁面中,利用如下代碼
  1. <div id='b'><a onclick="window.demo.clickOnAndroid(2)">b.c</a></div>
複製代碼

即可實現調用
作者: louis5727008    時間: 2012-2-6 14:50
太棒了~很有收穫~





歡迎光臨 Android 台灣中文網 (https://apk.tw/) Powered by Discuz! X3.1