新機能を実装中です!その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 に対応していない、、、ぐぬぬぬ。。。