Webview crash NullPointerException android.webkit.WebViewDatabase.initDatabase (WebViewDatabase.java:234)

Я получаю из Google Play сообщения, что мое приложение аварийно, в msg

java.lang.NullPointerException at android.webkit.WebViewDatabase.initDatabase(WebViewDatabase.java:234) at android.webkit.WebViewDatabase.init(WebViewDatabase.java:212) at android.webkit.WebViewDatabase.access$000(WebViewDatabase.java:40) at android.webkit.WebViewDatabase$1.run(WebViewDatabase.java:193) 

Я не нашел в google или в stackoverflow подобный probloem, поэтому я не знаю, почему этот crach, но я знаю эту причину с помощью webview.

Выглядит так же, как и этот вопрос (плюс потенциальное обходное решение):

https://code.google.com/p/android/issues/detail?id=35204

Здесь я нашел код для WebViewDatabase (это не совсем та же версия, но для получения изображения достаточно контекста):

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.0.1_r1/android/webkit/WebViewDatabase.java#WebViewDatabase.initDatabase%28android.content.Context% 29

Если вы посмотрите на код для initDatabase (), на линии, которую я обозначил «****», есть потенциальный NPE. Обратите внимание, что следующая строка проверяет значение NULL, поэтому выглядит немного тупым:

  private void initDatabase(Context context) { try { mDatabase = context.openOrCreateDatabase(DATABASE_FILE, 0, null); } catch (SQLiteException e) { // try again by deleting the old db and create a new one if (context.deleteDatabase(DATABASE_FILE)) { mDatabase = context.openOrCreateDatabase(DATABASE_FILE, 0, null); } } mDatabase.enableWriteAheadLogging(); **** // mDatabase should not be null, // the only case is RequestAPI test has problem to create db if (mDatabase == null) { mInitialized = true; notify(); return; 

Попробуйте проверить код, вызывающий android.webkit.WebViewDatabase.initDatabase() У него есть обработка ошибок или любая проблема при открытии базы данных в определенных ситуациях?

У вас есть обработка ошибок / обнаружение объектов? Можете ли вы показать несколько строк кода?

Я проверил предоставленные ссылки, исходные коды Android, внутреннюю аналитику сбоев и, похоже, проблема существует только для android 4.0 – 4.0.4. Я опробовал свое предложение на Android 2.3.6, 4.0.3, 4.4.2, и это кажется правильным. Итак, я закончил со следующим обходным решением для этой проблемы:

 package com.android.example; import android.content.Context; import android.os.Build; public class WebViewUtil { private static final String WEBVIEW_DATABASE_FILE = "webview.db"; public static boolean isWebViewCorrupted(Context context) { try { int currentSdk = Build.VERSION.SDK_INT; if (currentSdk == Build.VERSION_CODES.ICE_CREAM_SANDWICH || currentSdk == Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1) { try { context.openOrCreateDatabase(WEBVIEW_DATABASE_FILE, 0, null); } catch (Throwable t) { // try again by deleting the old db and create a new one context.deleteDatabase(WEBVIEW_DATABASE_FILE); context.openOrCreateDatabase(WEBVIEW_DATABASE_FILE, 0, null); } } return false; } catch (Throwable t) { } return true; } }