肝はWebViewのaddJavascriptInterface()メソッド。
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); WebView web = (WebView)this.findViewById(R.id.webkitWebView1); web.getSettings().setJavaScriptEnabled(true); ClickEvent obj = new ClickEvent(); web.addJavascriptInterface(obj, "android"); web.loadUrl("file:///android_asset/index.html"); } public class ClickEvent{ public void callEvent(){ //任意の処理 } }
このような記述をするとClickEventクラスのインスタンスobjをjavascript上でandroidというオブジェクト名で起動できます。
具体的に、callEventメソッドを呼ぶにはこんな感じ。
android.callEvent();
この処理でUIの書き換えもインテントの発行もできます。
実態はWEBアプリでもネイティブアプリっぽく作れますね。
0 件のコメント:
コメントを投稿