Bloqueo de vista web NullPointerException android.webkit.WebViewDatabase.initDatabase (WebViewDatabase.java:234)
Recibo de google play msg que mi apl crash, en el 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)
No encuentro en google o en stackoverflow probloem similar así que no sé por qué este crach, pero sé que causa por webview.
- Desactivación nativa de WebView: libwebviewchromium.so "Operación no permitida" - ILL_ILLOPC
- Utilizar folleto en una aplicación de Android para mostrar el mapa en línea
- Llame a WebView # getDrawingCache () de forma asincrónica sin congelar el subproceso de la interfaz de usuario
- Aplicación existente explotando con Android 3.0 XOOM. ¿Fugas de ZoomButtonsController?
- El selector de archivos no funciona en Samsung Tab 3 Android 4.4
- Android Load Cache Only no funciona. Mostrar WebView fuera de línea
- Agente de usuario de WebView
- WebViewCoreThread utilizado por admob AdView utiliza CPU alta incluso cuando la actividad principal está en pausa
- Cada navegador basado en WebKit bloquea sitios usando Omniture. ¿Por qué?
- WebView consumiendo demasiada memoria
- Opción de pantalla completa no disponible al cargar video de YouTube en WebView
- Trabajar con archivos ePub en android
- Las imágenes no se cargan en la vista web de android
Parece ser el mismo que este problema aquí (además de posibles soluciones):
https://code.google.com/p/android/issues/detail?id=35204
He encontrado el código para WebViewDatabase aquí (no es exactamente la misma versión, pero hay suficiente contexto para obtener la imagen):
Si miras el código de initDatabase (), hay un potencial NPE en la línea que he marcado con "****". Tenga en cuenta que la línea siguiente comprueba NULL, por lo que parece ser un poco tonto:
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;
Intente comprobar cualquier código que llame a android.webkit.WebViewDatabase.initDatabase()
¿Tiene un manejo de errores o algún problema con la apertura de la base de datos en ciertas situaciones?
¿Tiene manejo de errores / detección de objetos? ¿Puedes mostrar algunas líneas del código?
He inspeccionado los enlaces proporcionados, los códigos fuente de Android, análisis de fallos internos y parece que el problema sólo existe en android 4.0 – 4.0.4. He probado mi sugerencia en android 2.3.6, 4.0.3, 4.4.2 y parece ser correcto. Así que terminé con la siguiente solución para este problema:
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; } }
- IPhone-como llavero en Android?
- En Android si OS mata mi aplicación, getIntent () devolverá el intento con los mismos extras?