我遇到了一个在HTC Desire上运行(我自己的)应用程序的奇怪问题。
当我从我的活动中调用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”,& handle,6,NULL)失败
10-23 12:24:38.545:WARN / cache(16692):无法创建webviewCache目录 10-23 12:24:38.665:ERROR / webviewdatabase(16692):异常:java.lang.NullPointerException 10-23 12:24:41.555:ERROR / AndroidRuntime(16692):致命异常:WebViewWorkerThread 10-23 12:24:41.555:ERROR / AndroidRuntime(16692):java.lang.NullPointerException 10-23 12:24:41.555:ERROR / AndroidRuntime(16692):在android.webkit.WebViewDatabase.getCacheTotalSize(WebViewDatabase.java:793) 10-23 12:24:41.555:ERROR / AndroidRuntime(16692):在android.webkit.CacheManager.trimCacheIfNeeded(CacheManager.java:548) 10-23 12:24:41.555:ERROR / AndroidRuntime(16692):在android.webkit.WebViewWorker.handleMessage(WebViewWorker.java:190) 10-23 12:24:41.555:ERROR / AndroidRuntime(16692):在android.os.Handler.dispatchMessage(Handler.java:99) 10-23 12:24:41.555:ERROR / AndroidRuntime(16692):在android.os.Looper.loop(Looper.java:144) 10-23 12:24:41.555:ERROR / 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,但我找不到改变它的方法。
我是否需要设置创建缓存文件的权限?
感谢您的帮助!
亲切的问候, 多米尼克