
いろいろアプリを作っていたら、
Android 4.2系でJavaScriptからネイティブコードが呼べない事があったので、
解決方法のメモ。
JavaScriptのInterfaceを登録するには、
webview.addJavascriptInterface(new JSObject(this), "jsobject");
と登録していました。
そこは今までと変わらず、
4.2以降では、
このJSObjectのJavaScriptから呼び出すメソッドに、
@JavascriptInterface
のアノーテーションを付ける必要があるようです。
ので、
class JSObject {
public JSObject(Context context) {
}
@JavascriptInterface // ここを追加
public void callFromJS(String message) {
}
}
ちなみに、ビルドターゲットも17以上にしないとビルド出来ないので、
古いターゲットのままでJavaScript Interfaceを使うのであれば、
上限を16とかにしておいた方が良いかもしれません。
0 件のコメント:
コメントを投稿