AndroidのWebView内のJSからAndroid側のメソッドを呼び出してみる

WebViewのJavaScriptからAndroid側のメソッドを呼び出すにはWebAppInterfaceを継承したクラスを作ってそのクラスをwebViewにaddJavascriptInterface(…)を実装すればいいのですが、その最小限のコード例と簡単な解説を記しておきます。

MainActivity.java

...
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(new MyWebAppInterface(this), "Android");
...

MainActiviy.javaの

webView.addJavascriptInterface(new MyWebAppInterface(this), "Android");
によってJavaScript側からAndroidのメソッドを呼ぶときは
Android.hogehoge()
の形式で呼ぶことができるようになります。

それでは次にMyWebAppInterface.javaを実装します。

MyWebAppInterface.java

public class MyWebAppInterface{
    Context mContext;

    /** Instantiate the interface and set the context */
    MyWebAppInterface(Context c) {
        mContext = c;
    }


    @JavascriptInterface
    public String hello() {
        return "Hello from Android!";

    }

}

@JavascriptInterfaceが付いているhelloというメソッドは JavaScript側からアクセスできるメソッドとなります。

これでJavaScriptから
Android.deviceToken();
のメソッドを呼び出すと、
>> "Hello from Android"
という文字列が返ってきます。

Related Contents

Pickup Contents