По какой-то причине решение для работы с базами данных, описанное в этой статье , не работает на HTC Desire HD после того, как он получил обновление OTA до 2.2.1 (1.72.405.3). Он работал на Desire HD до обновления, и мне не удалось воспроизвести ошибку на реальных устройствах под управлением 2.1, 2.2, а также в эмуляторе под управлением всех версий.
К сожалению, вы не можете создать AVD для эмулятора под управлением Android 2.2.1, и я пробовал ПЗУ на основе 2.2.1 (у меня рутированный обычный HTC Desire), но мое приложение на нем также работает без проблем. Таким образом, вопрос в том, использует ли он Android SDK каким-либо образом, не должен ли он внезапно вызвать проблему?
Я знаю, что это очень специфическая проблема, но так как больше разработчиков, чем я, сообщают о проблеме, а также о том, что вы не можете создать AVD, я надеюсь, что вопрос принят, и я надеюсь, что кто-то знает, что может вызвать проблема.
Вот трассировка стека, отправленная на мою учетную запись Market пользователем:
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, найденная в трассировке стека, является строкой 10 в pastebin.