数据库处理在Android 2.2.1上停止工作(Desire HD 1.72.405.3)

Bjö*_*örn 8 sqlite android

出于某种原因,本文中描述的数据库处理解决方案在将OTA更新到2.2.1(1.72.405.3)之后无法在HTC Desire HD上运行.它在更新之前在Desire HD上工作,我无法在运行2.1,2.2的实际设备以及运行所有版本的模拟器中重现错误.

不幸的是你无法为运行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)  
Run Code Online (Sandbox Code Playgroud)

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

Bjö*_*örn 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;

当我有机会亲自在实际手机上进行测试时,我会试着指出问题.如果有人测试此解决方案,请告诉我它是否解决了.