#安卓 查询应用的安装来源

问题背景

最近游戏中接入了统计工具,但是发现安装量远比谷歌商店后台统计的要多。更重要的是,这些安装中,有相当一部分是旧版本的。于是,怀疑是不是有被抓包的情况。

这就需要统计应用的安装来源。

解决方法

通过packageManager可以获取相关信息:

  • PackageManager.getInstallerPackageName(String)
  • PackageManager.getInstallSourceInfo(String)

代码如下:

    // 查询安装来源
    public static String checkInstaller(Context context){
        final String packageName = context.getPackageName();
        final String installer = context.getPackageManager().getInstallerPackageName(context.getPackageName());

        Log.d(TAG, "checkInstaller: package = " + packageName + ", installer = " + installer);

        if(installer == null){
            return "null";
        }

        return installer;
    }

测试

  • 1). 如果是从Android Studio中直接安装,则installer为 null
  • 2). 如果将apk复制到手机上,然后再安装,则installer为 com.android.packageinstaller
  • 3). 如果是从google play商店安装,则installer 可能为 com.android.vending(待上线确认)