Страницы

Поиск по вопросам

вторник, 31 декабря 2019 г.

Первичная установка или обновление андроид-приложения, как узнать программно?

#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();

Комментариев нет:

Отправить комментарий