新機能を実装中です!その6
実機(IS03)で起動できない問題は、実機を買い替えることで解決しました。
新しい実機は、AQUOS PHONE SERIE mini(SHL24)です。
Androidのバージョンも、2.2(IS03)→ 4.2.2(SHL24)に上がりました。
っていうか、最近のスマホは速いですね〜
で、4.2.2になったことで、別問題が発生した。
起動は出来たのだが、50音バス停検索で、ずっと読み込み中になってしまう、、、何故だ。。。
調べた結果、バスくるではバス会社のHTMLを解析してるのですが、解析手段にWebViewでHTMLを取得して別メソッドに渡してます。
で、別メソッドから解析クラスを通して、必要な情報を取得しています。
WebView webView = new WebView(this); webView.addJavascriptInterface(this, "activity"); webView.setWebViewClient(new WebViewClient() { public void onPageFinished(WebView view, String url) { view.loadUrl("javascript:window.activity.viewSource(document.documentElement.outerHTML,location.search.substring(1));"); } }); public void viewSource(final String src, final String param) { ・・・ }
結論としては、4.2以降からセキュリティの仕様変更があり、@JavascriptInterface の記述が必要になったようです。
@JavascriptInterface public void viewSource(final String src, final String param) { ・・・ }
ということで、対象のメソッドに @JavascriptInterface を追記しました。
で、ビルドしたら BUILD FAILURE ・・・え?
maven-compiler-plugin が、@JavascriptInterface に対応していない、、、ぐぬぬぬ。。。