利用PackageInfo判断应用首次安装还是覆盖安装
2017-07-28 本文已影响44人
于卫国
本文首发:http://yuweiguocn.github.io/
本文介绍了如何利用PackageInfo判断应用首次安装还是覆盖安装。
《琵琶记》
我本将心向明月
奈何明月照沟渠
落花有意随流水
流水无心恋落花
-元,高明
背景
开发过程中产品提出一个这样的需求,应用如果是覆盖安装要做一些指定逻辑处理。如果之前的版本使用SP保存了相关版本号什么的,那可以很容易地判断,如果之前的版本并没有一个可以判断覆盖安装的值,那该怎么办?
解决方案
我们可以根据PackageInfo中的firstInstallTime和lastUpdateTime的值判断是首次安装还是覆盖安装。
public static boolean isFirstInstall(Context context) {
return getPackageFirstInstallTime(context) == getPackageLastUpdateTime(context);
}
public static long getPackageFirstInstallTime(Context context) {
String name = context.getPackageName();
long time = 0;
try {
time = context.getPackageManager().getPackageInfo(name, 0).firstInstallTime;
} catch (Exception e) {
e.printStackTrace();
}
return time;
}
public static long getPackageLastUpdateTime(Context context) {
String name = context.getPackageName();
long time = 0;
try {
time = context.getPackageManager().getPackageInfo(name, 0).lastUpdateTime;
} catch (Exception e) {
e.printStackTrace();
}
return time;
}