我在HTC Desire上運行(我自己的)應用程序時遇到了一個奇怪的問題。在HTC Desire上創建緩存文件和目錄的問題
當我從我的activity中調用getApplicationContext()。getCacheDir()或getApplicationContext()。getFilesDir()時,它總是返回null。在模擬器/data/data/com.myapp.android/cache中分別返回/data/data/com.myapp.android/files。
因此,我無法使用webview類,因爲它試圖創建緩存文件並使用空指針異常崩潰。日誌:
10-23 12:24:38.055:ERROR/Database(16692):sqlite3_open_v2(「/ data/data/com.myapp.android/databases/webview.db」,& handle,6,NULL )失敗 10-23 12:24:38.055:ERROR/Database(16692):sqlite3_open_v2(「/ data/data/com.myapp.android/databases/webviewCache.db」,&句柄,6,NULL)失敗
10-23 12:24:38.545:WARN/cache(16692):無法創建webviewCache目錄 10-23 12:24:38.665:ERROR/webviewdatabase(16692):Exception:java.lang.NullPointerException 10- 23 12:24:41.555:ERROR/AndroidRuntime(16692):致命異常:WebViewWorkerThread 10-23 12:24:41.555 :錯誤/ AndroidRuntime(16692):java.lang.NullPointerException 10-23 12:24:41.555:錯誤/ AndroidRuntime(16692):在android.webkit.WebViewDatabase.getCacheTotalSize(WebViewDatabase.java:793) 10-23 12 :24:41.555:錯誤/ AndroidRuntime(16692):在android.webkit.CacheManager.trimCacheIfNeeded(CacheManager.java:548) 10-23 12:24:41.555:錯誤/ AndroidRuntime(16692):在android.webkit.WebViewWorker .handleMessage(WebViewWorker.java:190) 10-23 12:24:41.555:ERROR/AndroidRuntime(16692):at android.os.Handler.dispatchMessage(Handler.java:99) 10-23 12:24:41.555 :錯誤/ AndroidRuntime(16692):在android.os.Looper.loop(Looper.java:144) 10-23 12:24:41.555:錯誤/ AndroidRuntime(16692):在android.os.HandlerThread.run(HandlerThread .java:60) 10-23 12:24:41.575:WARN/ActivityManager( 92):強制整理活動com.myapp.android/.StockDetailActivity
我注意到其他應用程序也有問題。例如,Google財經應用程序記錄以下消息:
10-23 12:18:59.415:ERROR/ApplicationContext(16073):無法重命名文件/data/data/com.google.android.apps.finance /shared_prefs/com.google.android.apps.finance_preferences.xml備份文件/data/data/com.google.android.apps.finance/shared_prefs/com.google.android.apps.finance_preferences.xml.bak
爲什麼我無法在此目錄中創建文件夾?
是否有可能將fileDir和cacheDir路徑設置爲SD卡或其他位置? 我看了一些像Context,Webview和CacheManager這樣的類,但是我找不到改變它的方法。
我是否需要設置創建緩存文件的權限?
謝謝你的幫助!
親切的問候, 多米尼克