2011-08-18 11 views
5

私は、共有された環境設定を使用して、アプリケーションが起動された回数を保存しています。最初の起動時にのみ、Welcomeのメッセージが表示され、そのバージョンの新機能や変更についてユーザーに伝えます。アップデート/アンインストール時のSharedPreferencesの動作

しかし、私はアプリを再インストールしたり、アプリケーションをアップグレードすることに慣れていたので、以前の共有プリファレンスを削除することはできません。私はソフトウェアを再インストールするか、それをアップグレードするときにダイアログを表示したいと思います。

ランチャ

public class AppLauncher { 
    static long launch_count = 0; 
    private static boolean isLaunch = false; 

    public static void app_launched(Context mContext) { 
     System.out.println("I m in AppLauncher"); 
     SharedPreferences prefs = mContext.getSharedPreferences("apprater", 0); 
     if (prefs.getBoolean("dontshowagain", false)) { 
      return; 
     } 

     SharedPreferences.Editor editor = prefs.edit(); 

     // Increment launch counter 

     launch_count = prefs.getLong("launch_count", 0); 
     editor.putLong("launch_count", launch_count); 

     System.out.println("launch_count=" + launch_count); 
     if (launch_count == 0 || launch_count == 1) { 
      // showLaunchDialog(mContext); 
      isLaunch = true; 
     } 
     if (isLaunch == true) { 
      showLaunchDialog(mContext); 
      isLaunch = false; 
     } 
     editor.commit(); 
    } 

    public static void showLaunchDialog(Context mcontext) { 
     final Dialog dialog = new Dialog(mcontext); 
     dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
     dialog.setContentView(R.layout.whatsnew); 

     Button dismisButton = (Button) dialog.findViewById(R.id.dismisButtom); 
     System.out.println("inside dialog_started"); 
     dismisButton.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View arg0) { 
       dialog.dismiss(); 
      } 
     }); 
     dialog.show(); 
    } 
} 
+0

... – ngesh

答えて

14

アップデートの場合に共有設定を消去するためのフックはありません。

Nikolayはアプリのバージョン番号を保存することができます。現在のバージョン番号と比較してください。 PackageInfoPackageManagerのドキュメントを読んでパッケージ情報で提供されている情報の詳細情報については

this.getPackageManager().getPackageInfo(this.getPackageName(), 0).versionCode 

は、現在のバージョン番号のコールを取得するには。

+0

詳細について詳しく説明してくれてありがとう:)私はこれが私が必要としているものだと思う;) –

1

あなたがdontShowaginを設定しない得れば、あなたは次のようにだけtrueに優先して値を変更not.Soダイアログと次回を示したいと思います。だから、デフォルトではfalseなります実際にそれを増やすことなくカウンターをインクリメントしています。前のカウンターで+1してください。

SharedPreferences prefs = mContext.getSharedPreferences("apprater", 0); 
      if (prefs.getBoolean("dontshowagain", false)) { 
       return; 
      } 

      SharedPreferences.Editor editor = prefs.edit(); 

      // Increment launch counter 

      editor.putBoolean("dontShowagain",true); 
      launch_count = prefs.getLong("launch_count", 0)+1; 
      editor.putLong("launch_count", launch_count); 
+0

これはアプリのアップデート後に再度ダイアログを表示する問題を解決することはできません。 – Janusz

11

booleanを保存する代わりに、アプリケーションのバージョン番号を保存してください。現在のアプリのバージョン番号が高い(更新されている)場合は、ダイアログを表示して番号を更新します。

+0

なぜ私はそれを前に考えなかったのですか? :)多くのありがとう:) –

+0

ソリューションは簡単ですが、私はAndroidのSDKにアップグレードのバグをたくさん避け、堅牢性を高めるためにDBアップグレードのような単純なフックを追加することを期待しています(例えば、この設定を忘れて、ポイント...) –

関連する問題