2013-02-08 3 views
0

Я реализую приложение, имеющее MainActivity, onlyFirstRunActivity и alwaysRunActivity. Теперь я хочу, чтобы на приложение инсталляции или Updation из приложения мое приложение цикл должен быть таким:Запустить действие только в первый раз после установки приложения Android

MainActivity -> onlyFirstRunActivity -> alwaysRunActivity

и после установки или на Updation мое приложение цикл должен быть :

MainActivity -> alwaysRunActivity

Как я реализовать эту ситуацию

+2

SharedPreferences может хранить логический 'bFirstRun', который сообщает вам, является ли это первым запуском. –

+0

, но последние сохраненные sharedprefences остаются на updation.Means, как я могу настроить, что приложение обновляется при обновлении ?? – User42590

+1

не уверен, что вы имеете в виду, но если нет SharedPreference с именем 'bFirstRun' ... тогда вы находитесь в своем первом запуске. Затем установите значение false (и зафиксируйте изменение). в следующий раз через, он есть и FALSE, так что goto 'alwaysRunActivity' –

ответ

1

Вы можете получить время обновления для своего приложения и сохранить его в SharedPreference.

Кроме того, вы должны просто сделать свою основную деятельность всегда запущенной.

//In your onCreate for your main activity/. 
if(last_update_preference < current_update_time){ 
    Update last update preference to current update time. 
    Run first activity. (Which will finish and bounce you back); 
} 

Чтобы получить current_update_time:

How to get app install time from android

За последнее время обновления, см:

http://developer.android.com/guide/topics/data/data-storage.html#pref

+0

Я думаю, что он будет работать только для обновления. Как насчет первой установки? И разделяется ли безопасный способ? – User42590

+0

Он будет работать для первой установки, если вы вернете 0 в качестве значения по умолчанию для SharedPreference, последнее изменение должно быть временем установки. (Связанный вопрос переполнения стека показывает это) – Edison

+0

будет ли значение last_update_preference в первый раз ?? – User42590

0

Вы можете попробовать что-то вроде этого:

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    App app = (App)getApplication(); 
    if (app.getApi() != null){ 
     super.onBackPressed(); 
     startActivity(new Intent(this, MainActivity.class)); 
     return; 
    }else showLoginForm();//or do something else. 
} 
+0

Я не понял, почему вы получаете app.getAp ?? и что такое форма входа? – User42590

+0

Метод getApi() возвращает объект класса api, который создается из общих настроек. Поэтому это означает, что старт не первый. И я начинаю новую деятельность. Или, если api = null ots означает, что начало является первым, и я показываю регистрационную форму. – Vetalll

0

Как вы можете изменить разницу между новой установкой и обновлением.

String StoredVersionname = ""; 
    String VersionName; 
    AlertDialog LoginDialog; 
    AlertDialog UpdateDialog; 
    AlertDialog FirstRunDialog; 
    SharedPreferences prefs; 

    public static String getVersionName(Context context, Class cls) { 
       try { 
        ComponentName comp = new ComponentName(context, cls); 
        PackageInfo pinfo = context.getPackageManager().getPackageInfo(
          comp.getPackageName(), 0); 
        return "Version: " + pinfo.versionName; 
       } catch (android.content.pm.PackageManager.NameNotFoundException e) { 
        return null; 
       } 
      } 

    public void CheckFirstRun() { 
       VersionName = MyActivity.getVersionName(this, MyActivity.class); 
prefs = PreferenceManager.getDefaultSharedPreferences(this); 
       StoredVersionname = (prefs.getString("versionname", null)); 
       if (StoredVersionname == null || StoredVersionname.length() == 0){ 
        FirstRunDialog = new FirstRunDialog(this); 
        FirstRunDialog.show(); 
       }else if (StoredVersionname != VersionName) { 
        UpdateDialog = new UpdateDialog(this); 
        UpdateDialog.show(); 
       } 
       prefs.edit().putString("versionname", VersionName).commit(); 
      } 
Смежные вопросы