hyoromoのブログ

最近はVRSNS向けに作ったものについて書いています

Android4.2以上でJavascriptからJavaメソッドをコールするには

セキュリティ絡みの問題でJavascriptからアプリ上のJavaメソッドをコールする対象へ@JavascriptInterfaceアノテーションを付ける必要があります*1。このアノテーションを付けないとAndroid4.2以上の端末ではJavaメソッドがコールされません。以下、付けてみたサンプルコードです。

// getHogeメソッドはJavascriptからコールされる対象
public class LinkInterface {
    @JavascriptInterface
    public String getHoge() {
        return "hoge";
    }
}

この時にProguard設定に注意する事があります。何の設定もしていないと暗号化され、アノテーションが無効になってしまいます。そこで以下の1文をproguard-project.txtもしくはproguard.cfgに追記すればOKです。

-keepattributes *Annotation*

*1:詳しくは[http://developer.android.com/about/versions/android-4.2.html:title=Android4.2のリリースノート]を参照