Android 5.0 で厄介な現象を発見したのでメモ。
2015/04/08 追記
WebView 42 で修正されたかも。
現象
- アプリのWebViewでサイトを閲覧しているとJavaScriptのダイアログが出ない。
- confirmダイアログが出ず、常にキャンセル扱いとされるため、ボタンを押しても何も起きないように見える。
- つまり確定ボタンなど、ここぞというボタンが動かない!!!
発生するバージョン
- Android 5.0
- WebView 41 (現時点で最新版) https://play.google.com/store/apps/details?id=com.google.android.webview&hl=ja
なぜこのような問題が?
半日くらいかけて調べましたが、どうやら不具合のようです。地味に影響大きいんじゃ??
回避方法
思いつくままに
- WebViewをアンインストールして前のバージョンに戻す
- WebChromeClientのonJsConfirm, onJsAlert, onJsPrompt, onJsBeforeUnloadを自前で実装する http://developer.android.com/reference/android/webkit/WebChromeClient.html
- 外部ブラウザで開く(開くように誘導する)
- 不具合が直るまで様子を見る
WebViewは思わぬ機種依存・バージョン依存にハマることも多く、厄介ですね。。