美文网首页
app覆盖安装或升级sharespr数据不变

app覆盖安装或升级sharespr数据不变

作者: fyg | 来源:发表于2021-08-24 15:51 被阅读0次

测试升级的时候,要实现这样一种需求:

用户手机该app的版本为8.9.9,用户在该手机上覆盖安装8.9.9的版本,要求sp中的数据要删除掉重新统计。

由于app覆盖安装时sp是不会主助删除的,该如何实现这样的需求呢?

思路:
找一个变量用来记录app安装前后的区别,
app安装前后有什么区别呢?
1,app首次启动flag ,不行
2,同意安装权限falg,不行,因为用户同意安装权限后,在用户覆盖安装app的过程中用户也可以终止掉当前的行为(不想安装了),这时候用该flag来判断就会有问题
3,然后就想到了安装时间!

android监听app安装与卸载
android如何获得已安装程序的大小和时间

虽然google有在PackageInfo里提供firstInstallTime这个接口(其实是一个public字段),但似乎无用,返回值为零。google了下 真正可以获取安装时间要变通下

PackageManager pm = context.getPackageManager();  

ApplicationInfo appInfo = pm.getApplicationInfo("app.package.name", 0);  

String appFile = appInfo.sourceDir;  

long installed = new File(appFile).lastModified();



Android 获取应用的安装时间及更新时间

android卸载或者程序更新,SharedPrefefences文件会删除吗

程序升级更新与程序卸载对SharedPrefences文件的操作是有区别的。

程序升级更新安装程序并不会删除SharedPreferences中的数据。

程序卸载后SharedPreferences文件会立即删除,已经在模拟器中验证过了。






public static long getApkInstallTime(){
        long installTime = 0;
        PackageManager packageManager = AppContext.getInstance().getPackageManager();
        try {
            ApplicationInfo applicationInfo = packageManager.getApplicationInfo(AppContext.getInstance().getPackageName(), 0);
            String appFile = applicationInfo.sourceDir;
            installTime = new File(appFile).lastModified();


            PackageInfo packageInfo = packageManager.getPackageInfo(AppContext.getInstance().getPackageName(), 0);

            long firstInstallTime = packageInfo.firstInstallTime;
            long lastUpdateTime = packageInfo.lastUpdateTime;

            if (AppEnv.DEBUG){
                Log.d("test","installTime : "+installTime+"   firstInstallTime : "+firstInstallTime+"   lastUpdateTime : "+lastUpdateTime);
            }
        } catch (NameNotFoundException e) {
            installTime = -1;
        }
        return installTime;
    }


installTime : 1629789193000 firstInstallTime : 1629733990429 lastUpdateTime : 1629789195901

installTime : 1629789694000 firstInstallTime : 1629733990429 lastUpdateTime : 1629789697866

installTime : 1629789826000 firstInstallTime : 1629789828679 lastUpdateTime : 1629789828679

installTime : 1629790025000 firstInstallTime : 1629789828679 lastUpdateTime : 1629790027580

installTime : 1629790063000 firstInstallTime : 1629789828679 lastUpdateTime : 1629790067069

installTime : 1629790063000 firstInstallTime : 1629789828679 lastUpdateTime : 1629790067069

installTime : 1629790388000 firstInstallTime : 1629789828679 lastUpdateTime : 1629790390625

firstInstallTime :记录的是用户从无到有(无是指用户安装该
app前,手机上没有app)的情况,及: 该app从安装到手机
上到后续不断升级app的期间没有主动卸载过的情况,也就是
说覆盖安装时不会更新该值。

installTime 和 lastUpdateTime 的意思是 无论主动卸载后安装
还是不卸载直接覆盖安装,该值都会更新。

adb install -r 替换已存在的应用程序,也就是说强制安装

adb install -l 锁定该应用程序

adb install -t 允许测试包

adb install -s 把应用程序安装到sd卡上

adb install -d 允许进行将见状,也就是安装的比手机上带的版本低

adb install -g 为应用程序授予所有运行时的权限

adb 查看 android手机的CPU架构
adb shell cat /proc/cpuinfo











































相关文章

网友评论

      本文标题:app覆盖安装或升级sharespr数据不变

      本文链接:https://www.haomeiwen.com/subject/iuddiltx.html