2016年3月5日

Android WebView 的 JavaScript 與 Java 交互

要讓 WebView 內可以執行JavaScript,要先開啟WebView的設定
webView.getSettings().setJavaScriptEnabled(true);

要讓其中可以存取 Java 中的功能,就要建立一個可以讓 JavaScript 存取的 Interface
class JsObject {
    @JavascriptInterface
    public void alert(String ss) {
        AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
        builder.setTitle("TestAlert");
        builder.setMessage(ss);
        builder.show();
    }
}

@JavascriptInterface 標記的 Method 才會在JavaScript中被允許使用
然後將這個 class 加入WebView,其中 "myjs" 可以自訂為任意文字
webView.addJavascriptInterface(new JsObject(), "myjs");

最後在網頁中這樣呼叫就可以了
<script>
    window.myjs.alert("GG");
</script>