出于某种原因,this article中描述的数据库处理解决方案在将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)
可以在pastebin中找到相关方法。由于只能包含一个超链接,因此可以在下面的评论中找到链接。请注意,堆栈跟踪中的第81行是pastebin上的第10行。
答案 0 :(得分:5)
我似乎终于让我的应用程序在Desire HD上运行Android 2.2.1。我没有机会对其进行个人调试,以确切了解造成问题的原因。
弹出的一个想法是数据库文件所在的硬编码路径。 DB_PATH =“/ data / data / YOUR_PACKAGE / databases /”;
我想这条路径可能在Android 2.2.1 for Desire HD上无效。我用这条路交换了: Environment.getDataDirectory()+“/ data / YOUR_PACKAGE / databases /”+ DB_NAME;
当我有机会亲自在实际手机上进行测试时,我会尝试确定问题。如果有人测试这个解决方案,请告诉我它是否解决了。
答案 1 :(得分:0)