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

出于某种原因, 本文中描述的数据库处理解决scheme在获得OTA更新到2.2.1(1.72.405.3)之后不能在HTC Desire HD上运行。 它在更新之前在Desire HD上工作,并且我无法在运行2.1,2.2的实际设备以及运行所有版本的仿真器上重现错误。

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

我知道这是一个非常具体的问题,但由于比我更多的开发人员报告这个问题,以及你不能创build一个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) 

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

Solutions Collecting From Web of "数据库处理停止在Android 2.2.1上工作(Desire HD 1.72.405.3)"

我终于好像已经让我的应用程序在Desire HD上的Android 2.2.1上工作。 我没有机会亲自进行debugging,试试究竟是什么导致了这个问题。

一个想到popup的是数据库文件所在位置的硬编码path。 DB_PATH =“/ data / data / YOUR_PACKAGE / databases /”;

我想这是可能的,这个path是无效的Android 2.2.1的Desire HD。 我交换了这个path:Environment.getDataDirectory()+“/ data / YOUR_PACKAGE / databases /”+ DB_NAME;

当我有机会亲自testing实际的电话时,我会尽量指出这个问题。 如果有人testing这个解决scheme,请让我知道,如果它解决了。

以及Björn的出色答案,这个链接对我来说很合适:

链接在AndDev.org

看来你必须具体closuresthis.getReadableDatabase()的返回;