Обработка базы данных перестала работать на Android 2.2.1 (Desire HD 1.72.405.3) - PullRequest
8 голосов
/ 11 января 2011

По какой-то причине решение для работы с базами данных, описанное в этой статье , не работает на 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.

Ответы [ 2 ]

5 голосов
/ 28 января 2011

Мне наконец-то кажется, что мое приложение работает на Android 2.2.1 на Desire HD.У меня не было возможности отладить его лично, чтобы точно выяснить, что является причиной проблемы.

Одна мысль, которая возникла, - это жестко закодированный путь к файлу базы данных.DB_PATH = «/ data / data / YOUR_PACKAGE / database /»;

Полагаю, возможно, что этот путь не подходит для Android 2.2.1 для Desire HD.Я обменялся этим путем с: Environment.getDataDirectory () + «/ data / YOUR_PACKAGE / database /» + DB_NAME;

Я постараюсь уточнить проблему, когда у меня была возможность провести тестирование на реальном телефоне.себя.Если кто-нибудь проверит это решение, пожалуйста, дайте мне знать, если оно решит его.

0 голосов
/ 13 апреля 2011

, а также отличный ответ от Бьёрна, эта ссылка работала для меня:

Ссылка на AndDev.org

Кажется, вы должны специально закрыть возвращение this.getReadableDatabase ();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...