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

Как запустить активность только один раз, когда приложение открывается в первый раз?

У меня есть активность, которую я только хочу запускать, когда приложение запускается в первый раз.

И никогда больше. Это активность входа в facebook. Я только хочу запустить его один раз, когда приложение будет открыто открыто в первый раз.

Как мне это сделать?

4b9b3361

Ответ 1

Что я обычно делал, добавьте проверку для определенного общего предпочтения в Main Activity: если это разделяемое предпочтение отсутствует, запустите одноранговую активность, иначе продолжите основное действие. Когда вы запускаете одноранговую активность, создайте общую настройку, чтобы в следующий раз ее пропустить.

EDIT. В моем onResume для действия по умолчанию я делаю это:

    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
    boolean previouslyStarted = prefs.getBoolean(getString(R.string.pref_previously_started), false);
    if(!previouslyStarted) {
        SharedPreferences.Editor edit = prefs.edit();
        edit.putBoolean(getString(R.string.pref_previously_started), Boolean.TRUE);
        edit.commit();
        showHelp();
    }

В основном, я загружаю общие настройки по умолчанию и ищу варианты previously_started boolean. Если он не был установлен, я его установил, а затем запустил файл справки. Я использую это, чтобы автоматически показывать помощь при первой установке приложения.

Ответ 2

Отправьте следующий код в свой оператор onCreate

   Boolean isFirstRun = getSharedPreferences("PREFERENCE", MODE_PRIVATE)
            .getBoolean("isFirstRun", true);

    if (isFirstRun) {
        //show start activity

        startActivity(new Intent(MainActivity.this, FirstLaunch.class));
        Toast.makeText(MainActivity.this, "First Run", Toast.LENGTH_LONG)
                .show();
    }


       getSharedPreferences("PREFERENCE", MODE_PRIVATE).edit()
                .putBoolean("isFirstRun", false).commit();

Замените FirstLaunch.class классом, который вы хотите запустить

Ответ 3

что-то вроде этого может работать.

public class MyPreferences {

    private static final String MY_PREFERENCES = "my_preferences";  

    public static boolean isFirst(Context context){
        final SharedPreferences reader = context.getSharedPreferences(MY_PREFERENCES, Context.MODE_PRIVATE); 
        final boolean first = reader.getBoolean("is_first", true);
        if(first){
            final SharedPreferences.Editor editor = reader.edit();
            editor.putBoolean("is_first", false);
            editor.commit();
        }
        return first;
    }

}

Использование

boolean isFirstTime = MyPreferences.isFirst(MyActivity.this);

Ответ 4

SharedPreferences dataSave = getSharedPreferences("firstLog", 0);

if(dataSave.getString("firstTime", "").toString().equals("no")){ // first run is happened
}
else{ //  this is the first run of application
SharedPreferences.Editor editor = dataSave.edit();
                editor.putString("firstTime", "no");
                editor.commit();
}

Ответ 5

Я сделал это без Shared Prefrence... поскольку я знаю, что разделяемое предпочтение потребляет некоторую память, поэтому я использовал публичную статическую логическую переменную в глобальном классе.... Сначала я сделал Global Class Appconfig... и затем я сделал логическое статическое переменная такая:

public class Appconfig {

    public static boolean activity = false;
}

то я использовал эту публичную статическую логическую переменную в мой класс активности приветствия. Я использую страницу лицензионного соглашения. который я должен использовать только один раз в своем приложении, никогда больше не показывайте, когда я запускаю приложение. поэтому я положил condtion в приветственную деятельность... если приветственный класс запускается в первый раз, поэтому статическая логическая переменная ложна...

 if (Appconfig.activity == false) {
Intent intent = new Intent();
intent.setClass(WelcomeActivity.this,LicesnceActivity.class);
startActivity(intent);
WelcomeActivity.this.finish();
}
if (Appconfig.activity == true) {

Intent intent = new Intent();
intent.setClass(WelcomeActivity.this, MainActivity.class);
    startActivity(intent);

}

Теперь в классе Licesnce Activity я сделал:

Appconfig.activity=true;

Поэтому всякий раз, когда я запускаю приложение, вторая активность "Основная деятельность" запускается после того, как активность приветствия не будет действительной для лицензии....

Ответ 6

Объявлено в глобальном масштабе

   public int count=0 
   int tempInt = 0;

в вашей функции onCreate после этого кода сначала.

   count = readSharedPreferenceInt("cntSP","cntKey");
   if(count==0){
       Intent intent = new Intent();
       intent.setClass(MainActivity.this, TemporaryActivity.class);
       startActivity(intent);
       count++;
       writeSharedPreference(count,"cntSP","cntKey");
       }

Прошедшие эти два метода за пределами onCreate

    //Read from Shared Preferance
    public int readSharedPreferenceInt(String spName,String key){
    SharedPreferences sharedPreferences = getSharedPreferences(spName,Context.MODE_PRIVATE);
    return tempInt = sharedPreferences.getInt(key, 0);
    }     

    //write shared preferences in integer
    public void writeSharedPreference(int ammount,String spName,String key ){

    SharedPreferences sharedPreferences = getSharedPreferences(spName, Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPreferences.edit();

    editor.putInt(key, ammount);
    editor.commit();
}

Ответ 7

Объявить глобально

public int count=0;
   int tempInt = 0;

Первый экран OnCreate

count = readSharedPreferenceInt("cntSP","cntKey");
                if(count==0){
                    Intent i = new Intent(SplashScreen.this, IntroActivity.class);
                    startActivity(i);
                    count++;
                    writeSharedPreference(count,"cntSP","cntKey");
                }

                else {

                    Intent i = new Intent(SplashScreen.this, MainActivity.class);
                    startActivity(i);
                    // close this activity

                }

Теперь Outside Oncreat Method

public int readSharedPreferenceInt(String spName,String key){
        SharedPreferences sharedPreferences = getSharedPreferences(spName, Context.MODE_PRIVATE);
        return tempInt = sharedPreferences.getInt(key, 0);
    }

    //write shared preferences in integer
    public void writeSharedPreference(int ammount,String spName,String key ){

        SharedPreferences sharedPreferences = getSharedPreferences(spName, Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = sharedPreferences.edit();

        editor.putInt(key, ammount);
        editor.commit();
    }

Ответ 8

Это мой код для первого запуска OnBoarding Activity. Если это не первый раз, перейдите непосредственно к Домашнему занятию.

    private void checkFirstOpen(){
    Boolean isFirstRun = getSharedPreferences("PREFERENCE", MODE_PRIVATE)
            .getBoolean("isFirstRun", true);

    if (!isFirstRun) {
        Intent intent = new Intent(OnBoardingScreen.this, Home.class);
        startActivity(intent);
        finish();

    }

    getSharedPreferences("PREFERENCE", MODE_PRIVATE).edit().putBoolean("isFirstRun", 
    false).apply();
}

Ответ 9

Есть ли способ для приложения PhoneGap? У меня проблема такая же как оп.