利用PackageInfo判断应用首次安装还是覆盖安装

本文首发: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;
    }
    原文作者:于卫国
    原文地址: https://www.jianshu.com/p/fd5737039d96
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞