Как запустить активность только один раз, когда приложение открывается в первый раз?
У меня есть активность, которую я только хочу запускать, когда приложение запускается в первый раз.
И никогда больше. Это активность входа в facebook. Я только хочу запустить его один раз, когда приложение будет открыто открыто в первый раз.
Как мне это сделать?
Ответы
Ответ 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? У меня проблема такая же как оп.