內嵌網頁JavaScript與Activity互動,以撥打電話為例@Android

本文是Google Android應用程式範例實務課程-Day4課堂作業,說明如下。

由前二篇文章知如何於Android環境鑲嵌並瀏覽網頁,本文進一步讓內嵌網頁與Android互動。請參考:
1. 以WebViewClient於Android開啟網頁,並以AlertDialog提示載入狀態
2. 攔截onKeyDown使BACK按鍵運行WebViewClient之goBack,而非結束Activity


[範例情境]
1.透過Android的WebViewClient包裝網頁
2.點選網頁中的超連結要能自動撥打電話

[情境分析]
1.1個Activity
2.1個Layout
3.1個網頁
4.在Android中呼叫Javascript


SETP 1:新建專案


SETP 2:修改AndroidMainfest.xml


SETP 3:配置Layout


SETP 4:放置網頁
請將你準備要內嵌於WebViewClient的網頁放在assets資料夾,本例網頁只要提供超連結可以點擊即可,其內容如下 < html> < body> < a onClick="window.hippo.runOnAndroidJavaScript()">Click Me!< /a> < /body> < /html>
assets資料夾


SETP 5:撰寫程式碼 package com.exampl.android.homework7; import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.webkit.WebSettings; import android.webkit.WebView; public class Homework7 extends Activity { private WebView mWebView01; private Handler mHandler01 = new Handler(); /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mWebView01 = (WebView) findViewById(R.id.myWebView1); WebSettings webSettings = mWebView01.getSettings(); webSettings.setJavaScriptEnabled(true); webSettings.setSaveFormData(false); webSettings.setSavePassword(false); webSettings.setSupportZoom(false); mWebView01.addJavascriptInterface(new runJavaScript(), "hippo"); mWebView01.loadUrl("file:///android_asset/test.html"); } final class runJavaScript { public void runOnAndroidJavaScript() { mHandler01.post(new Runnable() { public void run() { Intent myIntentDial = new Intent(Intent.ACTION_CALL,Uri.parse("tel:0912345678")); startActivity(myIntentDial); } }); } } }

SETP 6:執行




沒有留言: