歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android與JavaScript相互調用

Android與JavaScript相互調用

日期:2017/3/1 10:50:44   编辑:Linux編程
下面這一節來介紹Android和javascript是怎麼相互調用的,這樣我們的UI界面設計起來就簡單多了,而且UI設計起來也可以跨平台。現在有好多web app前台框架了,比如sencha和jquery mobile等。相信未來隨著web app的發展我們同樣可以使用html設計出和本地應用一樣漂亮的界面。這些雖然很美好,但是現在還有很多弊端,比如比本地框架調用慢的多,因為手機是受限的設備,所以處理起來和反應都是比較慢的,期望未來會有較大的發展。哈哈!

廢話不多說,下面來寫一個WebViewDemo實現android與javascript相互調用。

先看一下main.xml用了哪些控件:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent"
  5. android:orientation="vertical" >
  6. <TextView
  7. android:layout_width="fill_parent"
  8. android:layout_height="wrap_content"
  9. android:text="@string/hello" />
  10. <WebView
  11. android:id="@+id/webView"
  12. android:layout_width="fill_parent"
  13. android:layout_height="wrap_content"
  14. />
  15. <Button
  16. android:id="@+id/button"
  17. android:layout_width="fill_parent"
  18. android:layout_height="wrap_content"
  19. android:text="調用javascript"
  20. />
  21. </LinearLayout>

然後給出我們的demo.html網頁

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  5. <title>Insert title here</title>
  6. <script type="text/javascript">
  7. function show(content){
  8. document.getElementById("countent").innerHTML=
  9. "這是我的javascript調用. 這是:"+content;
  10. }
  11. </script>
  12. </head>
  13. <body>
  14. <table align="center">
  15. <tr><td>姓名</td><td>電話</td></tr>
  16. <tr><td>小明</td><td><a href="javascript:demo.startPhone(123)">123</a></td></tr>
  17. <tr><td>小王</td><td><a href="javascript:demo.startPhone(456)">456</a></td></tr>
  18. </table>
  19. <p id="countent">html原始數據</p>
  20. </body>
  21. </html>
最後附上我們的核心代碼:
  1. public class WebViewDemoActivity extends Activity {
  2. /** Called when the activity is first created. */
  3. private WebView webView;
  4. private Button button;
  5. @Override
  6. public void onCreate(Bundle savedInstanceState) {
  7. super.onCreate(savedInstanceState);
  8. setContentView(R.layout.main);
  9. webView=(WebView) this.findViewById(R.id.webView);
  10. button=(Button) this.findViewById(R.id.button);
  11. WebSettings setting=webView.getSettings();
  12. //設置支持javascript
  13. setting.setJavaScriptEnabled(true);
  14. //增加接口方法,讓html頁面調用
  15. webView.addJavascriptInterface(new Object(){
  16. //這裡我定義了一個撥打的方法
  17. public void startPhone(String num){
  18. Intent intent=new Intent();
  19. intent.setAction(Intent.ACTION_CALL);
  20. intent.setData(Uri.parse("tel:"+num));
  21. startActivity(intent);
  22. }
  23. }, "demo");
  24. //加載頁面
  25. webView.loadUrl("file:///android_asset/demo.html");
  26. button.setOnClickListener(new OnClickListener() {
  27. @Override
  28. public void onClick(View v) {
  29. // TODO Auto-generated method stub
  30. webView.loadUrl("javascript:show('activity傳過來的數據')");
  31. }
  32. });
  33. }
這個項目裡用到了撥打電話,所以不要忘記這句代碼:
  1. <uses-permission android:name="android.permission.CALL_PHONE"/>

代碼比較簡單並附有注釋,這裡就不做過多解釋,下面運行一下項目:

html界面沒做美化,所以看起來有點丑,相信美工人員會做的更好,哈哈! 下面我們點擊調用javascript按鈕:

我們已經看到activity調用javascript方法並傳遞參數在html界面做了顯示,下面我們在點擊小明後面的電話號碼看又什麼反應:

OK! 我們已經通過html調用activity的方法並啟動的系統的撥打電話。

Copyright © Linux教程網 All Rights Reserved