SharedPreferences behaviour on Update/Uninstall

前端 未结 4 1364
不知归路
不知归路 2020-12-20 21:35

I am using shared preferences to store the number of times my application has been launched. Only on the first launch i display an Welcome message telling the user about the

相关标签:
4条回答
  • 2020-12-20 21:49

    Instead of saving a boolean save the version number of the app. If the current app's version number is higher (updated), show your dialog and update the number.

    0 讨论(0)
  • 2020-12-20 21:50

    try to listen this Intents:

    ACTION_PACKAGE_ADDED
    ACTION_PACKAGE_CHANGED
    ACTION_PACKAGE_DATA_CLEARED
    ACTION_PACKAGE_FIRST_LAUNCH
    ACTION_PACKAGE_INSTALL  
    ACTION_PACKAGE_REMOVED  
    ACTION_PACKAGE_REPLACED 
    ACTION_PACKAGE_RESTARTED

    more on: http://developer.android.com/reference/android/content/Intent.html#ACTION_PACKAGE_ADDED

    0 讨论(0)
  • 2020-12-20 21:53

    There is no hook that you can use to erase the shared preferences in the case of an update.

    Nikolay is right you can save the version number of your app. And compare it with the current version number.

    To obtain the current version number call:

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

    For more info on what information is available in the package info read the Documentation on the PackageInfo and the PackageManager.

    0 讨论(0)
  • 2020-12-20 21:53

    If you get don't set dontShowagin you will get false by default .So you want to show dialog and next time not.So just change the value in preference to true so that next time it works.Also you are incrementing the counter without actually incrementing it.Use +1 with the previous one.

    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 讨论(0)
提交回复
热议问题