2016-02-15 4 views
1

На этот раз мне нужно одноразовое PopUp в моем приложении, которое должно проверять версию приложения и отображать диалог только при первом запуске, и если было выполнено обновление (например, из Версия 2.1 - 2.2).Показывать одноразовый PopUp (экран приветствия)

Вот мой код:

//Pop-Up bei erstmaligem Start 
     mPrefs = PreferenceManager.getDefaultSharedPreferences(this); 
     // second argument is the default to use if the preference can't be found 
     Boolean welcomeScreenShown = mPrefs.getBoolean(welcomeScreenShownPref, false); 

     if (!welcomeScreenShown) { 
      //Popup Show 

      String whatsNewTitle = getResources().getString(R.string.whatsNewTitle); 
      //Changelog Text 
      String whatsNewText = getResources().getString(R.string.whatsNewText); 
      new AlertDialog.Builder(this).setIcon(android.R.drawable.ic_dialog_alert).setTitle(whatsNewTitle).setMessage(whatsNewText).setPositiveButton(
        R.string.ok, new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int which) { 
          dialog.dismiss(); 
         } 
        }).show(); 
      SharedPreferences.Editor editor = mPrefs.edit(); 
      editor.putBoolean(welcomeScreenShownPref, true); 
      editor.apply(); //Needs to be set! 
     } 

Этот код работает безупречно, благодаря @Martyn. Как я уже говорил, есть одна вещь, отсутствующая: версия VersionCheck.

Я понятия не имею, как это получить, и я надеюсь, что кто-то может мне помочь.

+0

Что вы имеете в виду * версии проверки *? – Rohit5k2

+0

Мне нужно проверить лишнее значение, http://i.imgur.com/MLkvYIj.png. Если его новее, чем, жестко закодированное, например. 0,9, он должен печатать PopUp. Dummycode: if (Versionbefore! = VersionNow) { // Show PopUp } –

ответ

1

ли это

mPrefs = PreferenceManager.getDefaultSharedPreferences(this); 
// second argument is the default to use if the preference can't be found 
Boolean welcomeScreenShown = mPrefs.getBoolean(welcomeScreenShownPref, false); 
int savedVersion = mPrefs.getInt("savedVersiono", 0); 
PackageInfo pinfo; 
int currentVersion = 0; 
try{ 
    pinfo = getPackageManager().getPackageInfo(getPackageName(), 0); 
    currentVersion = pinfo.versionCode; 
}catch (NameNotFoundException ex){ 

} 

if (!welcomeScreenShown || (currentVersion > savedVersion)) { 
    //Popup Show 

    String whatsNewTitle = getResources().getString(R.string.whatsNewTitle); 
    //Changelog Text 
    String whatsNewText = getResources().getString(R.string.whatsNewText); 
    new AlertDialog.Builder(this).setIcon(android.R.drawable.ic_dialog_alert).setTitle(whatsNewTitle).setMessage(whatsNewText).setPositiveButton(
       R.string.ok, new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int which) { 
         dialog.dismiss(); 
        } 
       }).show(); 
    SharedPreferences.Editor editor = mPrefs.edit(); 
    editor.putBoolean(welcomeScreenShownPref, true); 
    editor.putInt("savedVersiono", currentVersion); 
    editor.apply(); //Needs to be set! 
} 
+0

PackageInfo pInfo = getPackageManager(). GetPackageInfo (getPackageName(), 0); -> Ошибка необработанного исключения. NameNotFoundException –

+0

Положите вокруг себя блок try-catch. – Rohit5k2

+0

Я ничего не делал. Нет PopUp. Нужно ли устанавливать «savedVersion, 0» на определенную переменную? –

0
PackageInfo pinfo = getPackageManager().getPackageInfo(getPackageName(), 0); 
int versionNumber = pinfo.versionCode; 
String versionName = pinfo.versionName; 

Надеюсь, что это поможет вам проверить версию!

1

магазин Ваша версия на приветственном всплывающем окне

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

здесь код, чтобы получить версию

PackageInfo pInfo = getPackageManager().getPackageInfo(getPackageName(), 0); 
String version = pInfo.versionName; 

И вы можете получить код версии с помощью этого

int verCode = pInfo.versionCode; 
2

save versionName или versionCode после показа приветствий крейн для первого раза.

SharedPreferences.Editor editor = mPrefs.edit(); 
editor.putBoolean(welcomeScreenShownPref, true); 
editor.putString("version", currentVersion); 

см this о том, как получить versionName или VersionCode.

String version = mPrefs.getString("version", "1.0"); //assuming 1.0 as first version of your app 
if(!welcomeScreenShown || version.equalsIgnorCase(currentVersion)) 
{ 
    //welcome screen code 
} 
Смежные вопросы