JS與Android互調

來源:互聯網
上載者:User

JavaScript與Android程式之間的互動怎樣實現呢?前幾天在項目中遇到了這樣的問題。其實還是多簡單的,只有一個地方需要注意,那就是JavaScript與Android版本相容性。這裡先來總結下JavaScript調用Android程式和Android程式調用JavaScript的方法。

首先設定WebView的屬性,如果需要該Webview能與JavaScript直接進行互動,必須將其setJavaScriptEnabled設定為true。如下面幾行代碼

webview = (WebView) this.findViewById(R.id.webView1);WebSettings webSetting = webview.getSettings();webSetting.setJavaScriptEnabled(true);// 是否支援javaScript

1、JavaScript調用Android程式

JavaScript調用Androd程式需要Android程式中提供一個介面,個人認為在JavaScript調用Android介面的過程,有點類似於回調。具體如下

讓webview載入demo.html網頁,網頁中設定一按鈕,當點擊按鈕的時候就調用Android介面,demo.html如下:

      <script type="text/javascript">function jsToAndriod() { var msg = 'jsToAndriod';javascript:android.getResult(msg);}function androidToJs(){var msg = 'androidToJs';alert(msg);}</script>   
在Android程式中需要有如下的代碼,即定義JavaScript調用的介面:

第一步:先註冊提供給JavaScript調用的介面

webview.addJavascriptInterface(new JavaScriptinterface(), "android");
第二步:定義介面

class JavaScriptinterface{@JavascriptInterfacepublic void getResult(String str){Log.e("","result = " + str);}}


2、Android調用JavaScript介面

可以看到上面demo.html中有一個介面叫做androidToJs,是的,在JavaScript中就是這樣申明和定義介面的,在android程式中只需要這樣去調用即可:

webview.loadUrl("javascript:androidToJs()");   //調js中的方法  call in UI Thread !
注意是在主線程中調用哦,不然會有異常。


3、JavaScript和Android存在版本相容性問題

如果夠細心的話,可以看到在定義JavaScript調用Android介面的時候,在Android介面jsToAndroid()上面是有一個注釋@JavascriptInterface,是的,最好加上這一句,不然可能會存在JavaScript調不到Android介面的問題,會報錯說這個介面沒有定義。






聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.