出于某种原因,在将OTA更新到2.2.1(1.72.405.3)之后,this article中描述的数据库处理解决方案在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行.
解决方法:
我似乎终于让我的应用程序在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;
当我有机会亲自在实际手机上进行测试时,我会试着指出问题.如果有人测试此解决方案,请告诉我它是否解决了.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。