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)