« AndroidのCanvas.getPixels(int[]) | トップページ | Androidでlocalhostに接続 »

Androidとjavascriptの連携

Webkitを搭載しているAndroidでは、もちろんjavascriptも動く。 そして、すばらしいことにjavascript側からAndroidのオブジェクトをいじくったり、 関数を起動したりすることも可能という。

実際に使ってみたので、以下のソースを参照のこと。

Android側
public void hoge(){
        WebView view = new WebView(this);
        view.getSettings().setJavaScriptEnabled(true);
        object = new JsObject();
        view.addJavascriptInterface(object, "output");
        setContentView(view);
        view.loadUrl("http://chephes.sakura.ne.jp/AndroidTest/");
}

class JsObject{
	public int a = 100;
	public void test(){
		a = 10;
	}
}
Webページ側
<script type="text/javascript">
        output.test();
</script>

こんな感じに記述すると、ページを読み込んだ時点でoutput.test();が実行されて、 aの値に10が代入される。

|

« AndroidのCanvas.getPixels(int[]) | トップページ | Androidでlocalhostに接続 »

コメント

こんにちは。

一瞬面白そうな気がしたのですが、ちょっと疑問があります。output.test()で実行される処理がWebページ側の想定と違う場合もあると思います。別のアプリが同じページにoutput.test()を関連づけていた、というような場合です。

(1) AndroidアプリAでアクセスすると処理Aが実行されるサイトがある。(2) 悪意ある第三者が、同じサイトにアクセスすると危険な処理Bが実行されるAndroidアプリBを配布...といったことができてしまうのではないですか?

投稿: kazhik | 2007年12月 4日 (火) 21時08分

なるほど。確かに悪意のあるコードは実行できそうですね。
しかし基本的には読み出すURLはAndroid側で制御するので、特定のURLの箇所しか読み出さないような仕様にすれば、そこまで気にするべき問題ではないかと思います。
また、逆に任意のコードが実行できるというのは、危険ですが同時に応用次第では面白くもありますね。

投稿: chephes | 2007年12月 5日 (水) 09時08分

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/486213/9247812

この記事へのトラックバック一覧です: Androidとjavascriptの連携:

« AndroidのCanvas.getPixels(int[]) | トップページ | Androidでlocalhostに接続 »