Datenbank-handling aufgehört zu arbeiten auf Android 2.2.1 (Desire HD 1.72.405.3)
Aus irgendeinem Grund die Datenbank-handling-Lösung beschrieben dieser Artikel funktioniert nicht auf dem HTC Desire HD, nachdem es bekam das OTA update auf 2.2.1 (1.72.405.3). Es hat funktioniert auf Desire HD vor dem update und ich habe versäumt, den Fehler zu reproduzieren, auf die tatsächlichen Geräte mit 2.1, 2.2 sowie im emulator laufen alle Versionen.
Leider kann man keine AVD für emulator mit Android 2.2.1 und ich habe versucht eine ROM basierend auf 2.2.1 (ich habe einen gerooteten normale HTC Desire) aber meine Anwendung funktioniert ohne problem auf Sie als gut. Die Frage ist also, ob es mit dem Android-SDK in gewisser Weise sollte es auch nicht, dass plötzlich das problem verursachen?
Ich weiß, das ist eine sehr spezifische Frage, aber da mehr Entwickler, als mir berichten, das problem sowie die Tatsache, dass Sie können nicht erstellen Sie ein AVD ich hoffe die Frage ist erlaubt und ich hoffe, dass jemand eine Ahnung, was möglicherweise das problem verursacht.
Hier ist ein stack-trace an meinem Market Konto von user:
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)
Verwandte Verfahren finden Sie auf pastebin. Da die nur einen hyperlink enthalten, können link gefunden werden konnte, in den Kommentaren unten. Beachten Sie, dass die Linie 81 fand in der stack-trace der Linie 10 auf pastebin.
- pastebin.com/VTmCkeLq
- Weitere Kommentare von anderen Benutzern über das gleiche Problem gelesen werden können von diesem Kommentar und unter: reigndesign.com/blog/...
- ist die locale de_de nicht auf die neue Android 2.2.1 version? Aus dem Android source SQLiteDatabase.setLocale: "@throws SQLException wenn die Gebietsschema-konnte nicht gesetzt werden. Der häufigste Grund dafür ist, dass es keine collator verfügbar für das Gebietsschema, die Sie angefordert."
- Es sollte in Ordnung sein. Meine sqlite-db sieht wie folgt aus: CREATE TABLE android_metadata (Gebietsschema TEXT); INSERT INTO android_metadata VALUES('de_de'); ich habe auch Hinzugefügt Flagge NO_LOCALIZED_COLLATORS zu rufen, um SQLiteDatabase.openDatabase (), aber das hat auch nicht geholfen. Ich habe das Gefühl die Datenbank beschädigt ist, bevor es versucht, öffnen Sie es und Lesen Sie locale.
- Diese Frage scheinen mit dieser hier: stackoverflow.com/questions/4585790/...
- So wie dieser thread stackoverflow.com/questions/4718934/... Wünschen für eine detailliertere Erklärung, wie die user dieses Threads das Problem gelöst.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich endlich zu haben scheinen, habe meine app auf Android 2.2.1 auf Desire HD. Ich hatte noch nicht die Möglichkeit zu Debuggen, die auf Sie persönlich, um zu versuchen, herauszufinden, was genau das problem hervorruft.
Dachte man, dass aufgetaucht ist, ist der hart codierte Pfad, wo die Datenbank-Datei befindet.
DB_PFAD = "/data/data/YOUR_PACKAGE/Datenbanken/";
Ich denke, es ist möglich, dass dieser Pfad nicht gültig auf Android 2.2.1 für das Desire HD. Ich tauschte diesen Weg mit:
Umwelt.getDataDirectory() + "/data/YOUR_PACKAGE/Datenbanken/" + DB_NAME;
Werde ich versuchen zu pin zeigen Sie das Problem, wenn ich die chance zum testen auf dem eigentlichen Telefon selbst. Wenn jemand testen Sie diese Lösung, bitte lassen Sie mich wissen, wenn es Sie löst.
sowie die hervorragende Antwort von Björn, dieser link war für mich:
Link auf AndDev.org
Scheint es, müssen Sie angeben, schließen Sie die Rückkehr zu dieser.getReadableDatabase();