我从Google Play收到消息,消息提示我的应用崩溃了
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中找不到类似的问题,所以我不知道为什么会这样,但是我知道是由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;