WebViewのaddJavascriptInterfaceについて

WebページとAndroidのアプリとの連携を模索中

JavaScriptが有効にならない

WebViewで表示したWebでJavaScriptが有効にならなくて悩んだ
setWebChromeClientをしてあげないとだめみたい
setWebViewClientだとJavaScriptが有効にならなかった

WebView wv = new WebView(this);
wv.getSettings().setJavaScriptEnabled(true);
wv.setWebChromeClient(new WebChromeClient(){});

JavaScriptとアプリの連携

WebViewのaddJavascriptInterfaceを利用するとJavaScriptから使用できるオブジェクトが生成できる
これを使えばJavaScript内からアプリ内のメソッド(?)を呼び出したりできるので色々な情報が取得できる

でも、↓ではまった

JavaからString型で返してもJavaScriptではobjectになるらしい
WebView#addJavascriptInterface でハマった - gae+eyoの日記

String(hoge.android());

って感じでキャストしてやってどうにかなった

さらにサーバとの連携

これはjQueryつかってデータ送信

$.get('http://example.com/api.php', { hoge: 'hogehoge'});

addJavascriptInterfaceで設定したオブジェクトの情報を渡したいときはStringでキャストしてあげる

$.get('http://example.com/api.php', { hoge: String(hoge.android())});

それにしてもWebViewだとJavaScriptでエラーが発生しても無言だからJavaScriptがあってるのかまちがっているのか不明すぎる・・・
(きっとエラーが起きたとき用のイベントがあるんだろうけど、面倒で調べていないw)