Je suis coincé avec plus ou moins exactement le même problème et j'ai trouvé un défaut ouvert sur la question qui a du sens...
https://code.google.com/p/android/issues/detail?id=174566
Ma solution de contournement - bien que ce ne soit pas la meilleure solution - est de ne jamais effectuer la révision de la base de données et de suivre cela moi-même, donc de ne jamais appeler onUpgrade()
, et effectuez manuellement une mise à niveau lors de la mise à jour de l'application.
Alternativement, si vous avez une petite base de données en lecture seule, vous pouvez déclencher la copie de la base de données dans les actifs sur chaque onCreate()
dans DBHelper
classe, mais cela peut donner des problèmes indésirables si le système de fichiers est plein, alors ne le faites que lorsque vous cherchez une meilleure solution.
@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());
}
}
Mon application se met maintenant à niveau comme il se doit avec ma solution de contournement et en jugeant le temps écoulé depuis que ce défaut a été signalé à l'origine, il se peut qu'il ne soit jamais corrigé du tout...
Je suis désolé que ce ne soit pas une solution complète au problème, mais c'est au moins une voie à suivre.