Подтвердить что ты не робот

Выполнить код только один раз после того, как приложение установлено на Android-устройстве

Я хочу запустить кусок кода один раз только после установки приложения. После того, как он был выполнен, эта часть кода не должна вызываться снова, даже для обновления.

4b9b3361

Ответ 1

  • Проверить, является ли логическое значение X истинным в общих настройках
  • Если нет:
    а. Запустите специальный код
    б. Сохранить x как true в общих настройках

Например:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
if(!prefs.getBoolean("firstTime", false)) {
    // run your one time code
    SharedPreferences.Editor editor = prefs.edit();
    editor.putBoolean("firstTime", true);
    editor.commit();
}

Ответ 2

В прошлом я использовал общие предпочтения, но если вы хотите что-то сделать, то вы также можете посмотреть на установочный приемник. MyInstallReciever реализует BroadcastReciever

<receiver
    android:name="com.MyInstallReciever"
    android:exported="true">
    <intent-filter>
        <action
            android:name="com.android.vending.INSTALL_REFERRER" />
    </intent-filter>
</receiver>

Ответ 3

используйте этот простой код

   if (getPreferences(MODE_PRIVATE).getBoolean("is_first_run", true)) {
        /*
         * your code here
         */
        getPreferences(MODE_PRIVATE).edit().putBoolean("is_first_run", false).commit();
    }

Ответ 4

Используйте логическое значение, чтобы проверить, выполняется ли первое выполнение кода или нет.

SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = sharedpreferences.edit();
if(sharedpreferences.getBoolean("is_first_exec",false))
    {
        editor.putBoolean("is_first_exec",false);
        //your code here ...
    }

getBoolean() как и любой другой метод get SharedPreference, принимает второй параметр по умолчанию, который в первый раз вернет значение null (поскольку в файле SharedPreference ничего нет). Таким образом, код внутри блока if(){...} будет выполнен только один раз.

Сноски: SharedPreferences

Ответ 5

Thread t = new Thread(new Runnable() {
    @Override
    public void run() {
        //  Initialize SharedPreferences
        SharedPreferences getPrefs = PreferenceManager
                .getDefaultSharedPreferences(getBaseContext());

        //  Create a new boolean and preference and set it to true
        boolean isFirstStart = getPrefs.getBoolean("firstStart", true);

        //  If the activity has never started before...
        if (isFirstStart) {

            //  Launch app intro
            final Intent i = new Intent(MainActivity.this, DefaultIntro.class);

            runOnUiThread(new Runnable() {
              @Override public void run() {
                startActivity(i);
              }
            });

            //  Make a new preferences editor
            SharedPreferences.Editor e = getPrefs.edit();

            //  Edit preference to make it false because we don't want this to run again
            e.putBoolean("firstStart", false);

            //  Apply changes
            e.apply();
        }
    }
});

// Start the thread
t.start();