Если вы уже не имеете способа хранения версий коды, то этот подход должен работать:
Во-первых получить код текущей версии следующим образом, в onCreate()
методы:
public int versionCode;
PackageInfo pInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
versionCode = pInfo.versionCode;
Добавьте код, чтобы сохранить текущий код версии следующим образом, в методе onStop()
:
SharedPreferences sp = getSharedPreferences("prefs", Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();
editor.putInt("version_code", versionCode);
editor.commit();
Затем получить предыдущей версии коды следующим образом, в самом onCreate()
метода:
public int prevVersionCode = -1;
SharedPreferences sp = getSharedPreferences("prefs", Activity.MODE_PRIVATE);
int prevVersionCode = sp.getInt("version_code", -1);
if(prevVersionCode == -1) {
// this will happen on a previous app version
}
если prevVersionCode равен -1, это означает, что это была старая версия приложения, которая была обновлена.
Если prevVersionCode не равен -1, это означает, что версия, из которой только что было обновлено приложение, была версией, более новой, чем версия, в которой был добавлен этот код сохранения.
Теперь вы можете легко сравнить между версиями с помощью VersionCode и prevVersionCode, просто отметим, что если prevVersionCode равен -1, это означает, что ранее приложение было на версии, которые не имеют метод накапливания , но теперь он обновлен до более новой версии.
Например: Предположим, что приложение в настоящее время на VersionCode 13 и добавить этот код и после обновления с VersionCode 14. Таким образом, когда пользователи обновить приложение, то prevVersionCode будет равен -1, и вы можете делай, что хочешь. versionCode будет равен 14, но prevVersionCode будет давать -1, только с FIRST RUN.При перезапуске и versionCode и prevVersionCode даст .
Теперь Предположим, что вы обновить приложение дальше и после обновления с VersionCode 15. Теперь на первом запуске обновленного приложения, VersionCode даст 15, но prevVersionCode даст 14. Но после перезапуска оба будут давать 15.
Вам не обязательно. Google Play обновит все старые версии вашего приложения, указав, что ваш код версии выше, чем предыдущий APK, который вы загрузили. – Sunshinator
Я имею в виду что-то еще. Я хотел бы обнаружить, что старая версия установлена на моем телефоне (или была установлена во время установки новой версии, старая была удалена) –
Посмотрите на это: http://stackoverflow.com/q/30727953/4350275 –