测试升级的时候,要实现这样一种需求:
用户手机该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卸载或者程序更新,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
网友评论