fkm 〜 Super Software Entertainerへの道 〜 このページをアンテナに追加 RSSフィード

 | 

2012-02-15 JavaScript on Android

[][][]Android専用JavaScript Android専用JavaScriptを含むブックマーク

AndroidのWebViewは, 面白いやつです.

JavaScriptを有効にしてあげると, ちゃんと動きます.

WebView web = new WebView(this);
web.setWebChromeClient(new WebChromeClient());
web.getSettings().setJavaScriptEnabled(true);
web.setVisibility(View.GONE);
layout.addView(web);

String html = "<html><head><script type='text/javascript'>" +
        "window.alert('moke');" +
        "</script></head><body></body></html>";
web.loadData(html, "text/html", "utf-8");

見えてなくても, 動きます.

f:id:fkm:20120216010513p:image

Java世界にいるオブジェクトを, JavaScript世界に出張させることもできます.

たとえば, こんなクラスを定義してみる.

private static class JavaObj {
    public String call() {
        return "Moke on Java";
    }
}

このクラスインスタンスJavaScript世界に派遣させたい場合は, このメソッドを呼びましょう.

web.addJavascriptInterface(new JavaObj(), "moke");

第2引数JavaScript世界でのお名前. さっそくJavaScript世界で仕事してもらいましょう.

WebView web = new WebView(this);
web.setWebChromeClient(new WebChromeClient());
web.getSettings().setJavaScriptEnabled(true);
web.setVisibility(View.GONE);
layout.addView(web);

web.addJavascriptInterface(new JavaObj(), "moke");

String html = "<html><head><script type='text/javascript'>" +
        "window.alert(moke.call());" +
        "</script></head><body></body></html>";
web.loadData(html, "text/html", "utf-8");

実行すると, こんな感じ. JavaScript世界に行ってしまっても, Java世界で定義されたpublicメソッド呼べます.

f:id:fkm:20120216011159p:image

トラックバック - http://d.hatena.ne.jp/fkm/20120215/p1
 | 
掲示板