ゆれくるコール開発日誌

ゆれくるコール、あめふるコール、つながるコールや緊急地震速報のことなど

Android4.xのWebViewで、URLパラメータがわたせない

Android4.xの環境にて、アプリ内で地図を表示したいんだけど諸事情によりGoogle APIが使えない。

かわりにWebViewでGoogle Mapを表示することに。

 

asset/htmlにGoogle Map APIJavaScriptで記述したmap.htmlを用意し、loadUrlで処理に必要なパラメータをURLパラメータでわたそうとした。

こんな感じ。

 

view.loadUrl("file:///android_asset/html/map.html?lat=xxx&lon=xxx");

 

ところがこれがうまくうごかない。

URLが存在しないみたいなメッセージが表示されてしまう。

どうやらURLパラメータがついていると、エラーになってしまう模様。

 

ググってみると、おんなじように困っている人がいるようです。

ココとかココとか。

 

ココとかココとかココあたりを参考に、下記のように改修しました。

 

view.loadUrl("file:///android_asset/html/map.html?lat=xxx&lon=xxx");

としていたのを、

view.loadUrl("file:///android_asset/html/map.html);

としてパラメータをつけるのをやめます。

パラメータは別途メンバ変数とかに保存しておく。

 

そしてwebViewにWebViewClientを設定して、onPageFinished()をフック。

その中でhtmlに記述した、Google Map関連処理のJavaScriptを呼び出す。

メソッドの引数には保存しておいたパラメータを渡す。

 

webView.setWebViewClient(new WebViewClient()

{

    public void onPageFinished(WebView view, String url)

    {

        view.loadUrl("javascript:hoge(\""+保存しておいたパラメータ+"\")");

    }

});

 
これでJavaScriptにパラメータがわたります。
JavaScript側でも、パラメータをうけとるような改修を行っておきます。
 
これでうまくGoogle Mapが表示されました。
パラメータがうまくわたらないので、後からパラメータだけわたしてやるっていうやり方ですね。
 
ところでこれって、Android4.xのバグなんですかねー。
Android ProjectのIssueにもあがっているようです。