一、需求背景
如果需要在首次安装打开的时候做一些特殊处理就需要判断是不是首次安装。
二、实现
Android PackageInfo类中提供了两个变量firstInstallTime和lastUpdateTime,其中firstInstallTime表示App首次安装的时间戳,lastUpdateTime表示App上次更新的时间,当用户首次安装App的时候,这两个值会相等。并且这两个时Android系统来维护的,清除数据不会清除firstInstallTime, lastUpdateTime的值。这样就很好实现我们的需求了。
代码如下:
//判断是否首次安装
fun checkIsFirstInstall(instance: Application): Boolean {
val packageManager = instance.packageManager
val packageInfo = packageManager.getPackageInfo(instance.packageName, 0)
return packageInfo.firstInstallTime == packageInfo.lastUpdateTime
}
//判断是否时首次安装打开
//通过SharePreferences来处理是否是首次打开,两者组合就可以判断是否是首次安装打开了
fun checkIsFirstOpen(): Boolean {
return checkIsFirstInstall() && SPUtils.getData(IS_FIRST_OPEN_TAG, true)
}