Android4.xのWebViewで、URLパラメータがわたせない
Android4.xの環境にて、アプリ内で地図を表示したいんだけど諸事情によりGoogle APIが使えない。
かわりにWebViewでGoogle Mapを表示することに。
asset/htmlにGoogle Map APIをJavaScriptで記述した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(\""+保存しておいたパラメータ+"\")");
}
});