#android #установка #обновление
В андроид приложении хочу реализовать появление всплывающего окна с информацией об изменениях в новой версии приложения. Если пользователь обновляет приложение, то хочу выводить всплывающее окно. При первичной же установке с GooglePlay это окно не должно появляться. Как можно различить программно первичная установка приложения и обновление?
Ответы
Ответ 1
Есть такой подход - регистрируем ресивер на переустановку своего приложения:public class MyAppUpdatedReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // этот код будет выполнен после каждой переустановки // но при первой установке не вызывается } } Другой вариант: записываем куда-нибудь номер версии и при каждом старте сравниваем с текущим, если изменился - выводим ченжлог Ответ 2
Можно так проверять: public static boolean isFirstInstall() { try { long firstInstallTime = App.getContext().getPackageManager().getPackageInfo(getPackageName(), 0).firstInstallTime; long lastUpdateTime = App.getContext().getPackageManager().getPackageInfo(getPackageName(), 0).lastUpdateTime; return firstInstallTime == lastUpdateTime; } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); return true; } } public static boolean isInstallFromUpdate() { try { long firstInstallTime = App.getContext().getPackageManager().getPackageInfo(getPackageName(), 0).firstInstallTime; long lastUpdateTime = App.getContext().getPackageManager().getPackageInfo(getPackageName(), 0).lastUpdateTime; return firstInstallTime != lastUpdateTime; } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); return false; } }Ответ 3
Все очень просто. В теории: Вы получаете программно текущую версию кода приложения, сохраняете её в SharedPrefereneces, и делаете условие, если сохраненная версия соответствует текущей версии, не происходит ничего. То есть, юзер впервые скачал приложение, версия кода у которого равна 1, или пусть 32, и этот номер сохраняется. И как только сохраненный номер кода станет меньше текущего, это будет означать что приложение обновили, тогда выполняется условие вызова диалогового окна например, со списком изменений. На практике: // Реализовываем SharedPreferences SharedPreferences mPreferences = PreferenceManager.getDefaultSharedPreferences(this); @SuppressLint("CommitPrefEdits") SharedPreferences.Editor mEditor = mPreferences.edit(); // Получаем текущую версию кода int versionCode = BuildConfig.VERSION_CODE; // Получаем сохраненную версию кода int lastVersionCode = mPreferences.getInt("update_true", versionCode); // Если lastVersionCode меньше чем текущий versionCode выполняется условие if (lastVersionCode < versionCode) { // Вызываем диалоговое окно со списком измненений } // Сохраняем текущую версию кода mEditor.putInt("update_true", versionCode).apply();
Комментариев нет:
Отправить комментарий