Ho to fix FATAL EXCEPTION on WebView
ActivityにWebViewをオーバーレイ配置したAndroidアプリを開発していたのですが、WebView内のコンテンツをタップしたらエラーによりアプリが強制終了してしまうバグがでてしまいました。
エラーが起きたときのLogCatはこのような内容です。
Webコンテンツをクリックしたとき、ブラウザーを起動する処理に失敗するようです。
エラーが起きるアプリと起きないアプリがあり、原因は特定できませんでした。
改善前のソースです。
※エラーが起きるものと仮定したソースです。このソースを実行しても必ずエラーになるわけではありません。
Activity (Main.java)
マニフェスト(AndroidManifest.xml)
LogCatのスクリーンショット
WebViewをタップしても強制終了しないように改善したソースです。
Activity (Main.java)
※マニフェストの変更はありません。
改善した点は、ブラウザーが起動する処理をOSに任せず、WebViewClientのインスタンスを生成しIntentでブラウザーを起動させるところです。
これでエラーが起きなくなりました。
ちなみに「Is this really what you want?」というエラーメッセージは ContextImpl.java のソースにハードコーディングされてました。
http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.2_r1.1/android/app/ContextImpl.java
intent.getFlags()を条件によって例外が起きるようです。
以上、参考になれば幸いです。
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。