Проблема
У вас есть приложение, которое собирает данные об использовании приложений анонимно, поэтому вы обязаны информировать пользователей об этом при первом запуске приложения.
Решение
Храните общие настройки, сохраняя их значения только один раз. Каждый раз, когда приложение запускается, оно проверяет эти значения в настройках.
Если значения установлены (доступны), значит, это не первый запуск приложения; в противном случае это первый запуск.
Обсуждение
Вы можете управлять жизненным циклом приложения, используя класс приложения для платформы Android. Мы будем использовать общие настройки в качестве постоянного хранилища для хранения значения первого запуска.
Мы будем хранить булев флаг в настройках, если это первый запуск. Когда приложение установлено и используется в первый раз, у него нет никаких настроек. Они будут созданы для нас. В этом случае флаг примет значение true
. После получения флага true мы можем обновить этот флаг значением false
, поскольку нам больше не нужно, чтобы оно было истинным. См. пример 1.
Пример 1. Настройки первого запуска
public class MyApp extends Application {
SharedPreferences mPrefs;
@Override
public void onCreate() {
super.onCreate();
Context mContext = this.getApplicationContext();
// 0 = закрытый режим. Эти настройки может читать только приложение.
mPrefs = mContext.getSharedPreferences("myAppPrefs", 0);
// Код инициализации приложения
}
public boolean getFirstRun() {
return mPrefs.getBoolean("firstRun", true);
}
public void setRunned() {
SharedPreferences.Editor edit = mPrefs.edit();
edit.putBoolean("firstRun", false);
edit.commit();
}
}
Этот флаг из настроек будет проверен в активности запуска, как показано в примере 2.
Пример 2. Проверка первого запуска
if(((MyApp) getApplication()).getFirstRun()) {
// Это первый запуск
((MyApp) getApplication()).setRunned();
// Первое выполнение вашего кода
}
else {
// Это не первый запуск на вашем устройстве
}
Даже если вы публикуете обновления для приложения и пользователь устанавливает обновления, эти настройки не будут изменены, поэтому код будет работать только для первого запуска после установки. Последующие обновления приложения не приведут код в действие, если только пользователь не удалил и не переустановил приложение вручную.
Вы можете использовать подобный метод для распространения условно бесплатных версий приложения для платформы Android (т.е. ограничить количество пробных запусков приложения). В этом случае необходимо использовать значение целых чисел в настройках, чтобы указать количество испытаний. Каждое испытание обновляло бы предпочтения. После достижения желаемого значения вы заблокируете использование приложения до тех пор, пока пользователь не внесет плату за использование.