Update/Uninstall上的SharedPreferences行为

Har*_*M V 5 android sharedpreferences

我使用共享首选项来存储我的应用程序启动的次数.只有在第一次启动时,我才会显示一条欢迎消息,告诉用户该版本中的新功能和更改.

但是当我专注于重新安装应用程序或升级应用程序时,我无法删除以前的共享首选项.我想在重新安装软件或升级它时获得对话框.

AppLauncher

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();
    }
}
Run Code Online (Sandbox Code Playgroud)

Jan*_*usz 15

在更新的情况下,没有可用于擦除共享首选项的挂钩.

尼古拉是对的,你可以保存你的应用程序的版本号.并将其与当前版本号进行比较.

要获取当前版本号,请致电:

this.getPackageManager().getPackageInfo(this.getPackageName(), 0).versionCode
Run Code Online (Sandbox Code Playgroud)

有关包信息中可用信息的更多信息,请阅读PackageInfoPackageManager上的文档.


Nik*_*kov 11

而不是boolean保存应用程序的版本号.如果当前应用程序的版本号更高(更新),请显示对话框并更新数字.