2013-07-04 7 views
13

मैं गूगल से प्राप्त संदेश है कि मेरे ऐप दुर्घटना, संदेश मेंवेबव्यू दुर्घटना NullPointerException android.webkit.WebViewDatabase.initDatabase (WebViewDatabase.java:234)

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) 

मैं गूगल में या में नहीं मिलता खेलने stackoverflow समान probloem तो मुझे नहीं पता कि यह पागल क्यों है, लेकिन मुझे वेबव्यू द्वारा कारण पता है।

+0

क्या हम पूरे स्टैक ट्रेस देख सकते हैं? क्या कोई कारण है? – peshkira

+0

यह सभी रिपोर्ट है – idan

+0

क्या आप स्रोत कोड पोस्ट कर सकते हैं? – ArturSkowronski

उत्तर

0

android.webkit.WebViewDatabase.initDatabase() पर कॉल करने वाले किसी भी कोड की जांच करने का प्रयास करें क्या इसमें कुछ स्थितियों में डेटाबेस को खोलने में त्रुटि हैंडलिंग या कोई समस्या है?

क्या आपके पास त्रुटि हैंडलिंग/ऑब्जेक्ट डिटेक्शन है? क्या आप कोड की कुछ पंक्तियां दिखा सकते हैं?

1

इस मुद्दे यहाँ (प्लस संभावित वैकल्पिक हल) के रूप में ही लग रहा है:

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 (के लिए कोड को देखें, तो), वहाँ लाइन है कि मैं "****" के साथ चिह्नित पर एक संभावित एनपीई है। ध्यान दें कि शून्य के लिए लाइन चेकों निम्नलिखित, तो यह थोड़ा गूंगा होने के लिए लग रहा है:

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; 
0

मैं दिए गए लिंक्स, एंड्रॉयड स्रोत कोड, आंतरिक दुर्घटना एनालिटिक्स का निरीक्षण किया है और ऐसा लगता है कि समस्या केवल पर मौजूद है Android 4.0 - 4.0 .4। मैंने एंड्रॉइड 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; 
    } 
} 
संबंधित मुद्दे