Вот простой способ, который может решить вашу проблему. В вашем коде вы можете легко получить версию versionCode и versionName. В своей домашней деятельности вы проверяете isAppUpdated(). если текущий APP VERSION_NAME не сопоставляется с сохраненным VERSION_NAME, тогда приложение обновляется.
Вот пример кода:
Сохранить VersionName в настройках:
public static void saveVersionNameAndCode(Context context){
try{
PackageInfo packageInfo = context.getPackageManager()
.getPackageInfo(context.getPackageName(), 0);
int versionCode = packageInfo.versionCode;
String versionName=packageInfo.versionName;
CommonTasks.showLog("Saving APP VersionCode and Version Name");
// SAVE YOUR DATA
}catch(Exception e){
}
}
Проверить обновления приложения:
public static boolean isAppUpdated(Context context){
boolean result=false;
try{
PackageInfo packageInfo = context.getPackageManager()
.getPackageInfo(context.getPackageName(), 0);
int versionCode = packageInfo.versionCode;
String versionName=packageInfo.versionName;
String prevVersionName= GET STORED VERSION_NAME;
if(prevVersionName!=null && !prevVersionName.equals("") &&
!prevVersionName.equals(versionName)){
showLog("App Updated");
result=true;
}else{
showLog("App Not updated");
}
}catch(Exception e){
}
return result;
}
здесь, если isAppUpdated() возвращает истину означает, что ваше приложение обновляется ,
Примечание: После проверки проблемы обновления необходимо обновить sharedPreferences. :)
Использование MY_PACKAGE_REPLACED вещать –
Если вы используете SQLite => http://stackoverflow.com/questions/2488813/how-to-do-database-schema-migrations-in-android –
Спасибо, но версия базы данных не изменяется. – EV221