2011-01-10 64 views
8

出于某种原因,this article中描述的数据库处理解决方案在OTA更新为2.2.1(1.72)后无法在HTC Desire HD上工作.405.3)。它在更新之前在Desire HD上工作,我无法在运行2.1,2.2的实际设备以及运行所有版本的仿真器上重现错误。数据库处理在Android 2.2.1上停止工作(Desire HD 1.72.405.3)

不幸的是,你不能创建一个运行Android 2.2.1的模拟器的AVD,并且我已经尝试了基于2.2.1的ROM(我有一个根深蒂固的普通HTC Desire),但是我的应用程序没有问题。所以问题是,如果它以某种方式使用Android SDK,它不应该一下子引起问题?

我知道这是一个非常具体的问题,但由于更多的开发人员比我报告的问题以及事实,你不能创建一个AVD我希望这个问题被接受,我希望有人有线索可能造成什么问题。

这是一个被用户发送到我的电子市场帐户的堆栈跟踪:

Caused by: android.database.sqlite.SQLiteDiskIOException: disk I/O error 
at android.database.sqlite.SQLiteDatabase.native_setLocale(Native Method) 
at android.database.sqlite.SQLiteDatabase.setLocale(SQLiteDatabase.java:2049) 
at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1917) 
at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:889) 
at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:168) 
at com.MyApp.DataBaseHelper.createDataBase(DataBaseHelper.java:81) 
at com.MyApp.InitialActivity.onCreate(InitialActivity.java:33) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2797) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1066) 

相关方法可以在引擎收录找到。由于只能包含一个超链接,因此可以在下面的评论中找到链接。请注意,在堆栈跟踪中找到的第81行是pastebin中的第10行。

+0

http://pastebin.com/VTmCkeLq – 2011-01-10 21:40:26

回答

5

我终于看到我的应用程序在Desire HD上的Android 2.2.1上工作。我没有机会亲自进行调试,试试究竟是什么导致了问题。

弹出一个想法是数据库文件所在的硬编码路径。 DB_PATH =“/ data/data/YOUR_PACKAGE/databases /”;

我想这是可能的,这个路径不适用于Android 2.2.1的Desire HD。我通过以下方式交换了此路径: Environment.getDataDirectory()+“/ data/YOUR_PACKAGE/databases /”+ DB_NAME;

当我有机会在自己的实际电话上进行测试时,我会试着指出问题。如果有人测试此解决方案,请告诉我是否解决问题。

0

以及来自比约恩的出色答卷,该链接为我工作:

Link on AndDev.org

看来你必须specificly关闭this.getReadableDatabase的回报();