1

Gingerbread 以前のデバイスで、このキャッチできない例外が発生しています。

java.lang.NullPointerException: null
 at android.webkit.WebViewDatabase.getCacheTotalSize(WebViewDatabase.java:735)
 at android.webkit.CacheManager.trimCacheIfNeeded(CacheManager.java:557)
 at android.webkit.WebViewWorker.handleMessage(WebViewWorker.java:195)
 at android.os.Handler.dispatchMessage(Handler.java:99)
 at android.os.Looper.loop(Looper.java:123)
 at android.os.HandlerThread.run(HandlerThread.java:60)

私は AdMob 広告に WebView しか使っていないので、これはかなり面倒です。

これらのクラッシュを止める方法はありますか?

4

2 に答える 2

0

minSdkLevel が Donut 以降の場合は、(広告を読み込む前に) これを試してください。

if (VERSION.SDK_INT < 9) {
    try {
        Method m = WebViewDatabase.class.getDeclaredMethod("getCacheTotalSize");
        m.setAccessible(true);
        m.invoke(WebViewDatabase.getInstance(thisContext));
    }
    catch (Exception e) {
        // disable webview/ads
    }
}

minSdkLevel が Donut より前の場合は、別の方法を使用して SDK レベルをテストする必要があります。

private static int getSdkInt() {
    try {
        return Integer.parseInt(VERSION.SDK);
    }
    catch (Throwable t) {
        return -1;
    }
}
于 2012-08-20T15:50:03.380 に答える