2011年6月15日水曜日

【Android】WebViewのjavascriptとネイティブの連携

AndroidではWebViewに表示したjavascriptからJavaで記述したアプリのソースを起動できる仕組みが用意されています。
肝は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 件のコメント:

コメントを投稿