為了方便網頁和應用的交互,安卓系統WebView提供JavaScript網頁腳本調用Java類方法的機制。只要調用addJavascriptInterface方法即可映射一個Java對象到JavaScript對象上。
MainActivity.java代碼:
package com.apple.browser; import android.annotation.SuppressLint; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.webkit.WebSettings; import android.webkit.WebView; import android.widget.Toast; public class MainActivity extends Activity { private WebView webView; private Activity activity; @SuppressLint("SetJavaScriptEnabled") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); activity = this; webView = (WebView) findViewById(R.id.webview); webView.loadUrl("file:///android_asset/index.html"); final WebSettings settings = webView.getSettings(); settings.setJavaScriptCanOpenWindowsAutomatically(true); settings.setJavaScriptEnabled(true); settings.setSupportZoom(true); webView.addJavascriptInterface(new JSInvokeClass(), "js2java"); } public final class JSInvokeClass { public void back() { // activity.finish(); Toast.makeText(activity, "通過js調用的Java方法", Toast.LENGTH_SHORT).show(); } } }
HTML中代碼:
<input type=button name=smt value='invoke java' onclick="javascript:window.js2java.back();">
XML布局代碼:
略