Заседнал съм с горе-долу същия проблем и открих открит дефект по въпроса, който има смисъл...
https://code.google.com/p/android/issues/detail?id=174566
Моето заобиколно решение - макар и не най-доброто решение - е никога да не предприемам ревизията на базата данни и да проследя това сам, като по този начин никога не извиквам onUpgrade()
, и ръчно направете надстройка, когато актуализирате приложението.
Като алтернатива, ако имате малка DB, която е само за четене, можете да задействате копие на db в активи на всеки onCreate()
в DBHelper
клас, но това може да доведе до нежелани проблеми, ако файловата система е пълна, така че правете това само докато търсите по-добро решение.
@Override
public void onCreate(SQLiteDatabase db) {
// Workaround for Issue 174566
myContext.deleteDatabase(DB_NAME);
try {
copyDataBase();
}
catch(IOException e) {
System.out.println("IOException " + e.getLocalizedMessage());
}
}
Приложението ми сега се надгражда както трябва с моето заобикаляне и като преценя колко време е минало, откакто този дефект беше повдигнат първоначално, може никога да не бъде коригиран...
Съжалявам, че това не е пълно решение на проблема, но е поне начин напред.