检查是否从Google Play安装了应用程序

德米特里·金茨堡(Dmitry Ginzburg):

我正在处理应用程序,并添加了Google Play规则明确禁止的功能。因此,我希望对于那些从Google Play安装应用程序而未创建其他APK的用户禁用此特定功能。这意味着我需要从代码中确定是从Google Play安装该应用程序,还是仅通过下载apk来确定。

有没有办法做到这一点?

GoRoS:

这应该可以从HockeyAppSDK for Android Github 库获得

protected static boolean installedFromMarket(WeakReference<? extends Context> weakContext) {
    boolean result = false;

    Context context = weakContext.get();
    if (context != null) {
        try {
            String installer = context.getPackageManager().getInstallerPackageName(context.getPackageName());
            // if installer string is not null it might be installed by market
            if (!TextUtils.isEmpty(installer)) {
                result = true;

                // on Android Nougat and up when installing an app through the package installer (which HockeyApp uses itself), the installer will be
                // "com.google.android.packageinstaller" or "com.android.packageinstaller" which is also not to be considered as a market installation
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N && (TextUtils.equals(installer, INSTALLER_PACKAGE_INSTALLER_NOUGAT) || TextUtils.equals(installer, INSTALLER_PACKAGE_INSTALLER_NOUGAT2))) {
                    result = false;
                }

                // on some devices (Xiaomi) the installer identifier will be "adb", which is not to be considered as a market installation
                if (TextUtils.equals(installer, INSTALLER_ADB)) {
                    result = false;
                }
            }

        } catch (Throwable ignored) {
        }
    }

    return result;
}

但是,我建议为此目的构建两个不同的应用程序。如果您在Google Play中包含了禁止的代码,尽管该方法无法执行该代码,但它会成为您的字节码的一部分,很可能会被Google禁止。通过创建另一种样式,将其从代码中删除更加干净。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

检查Windows中是否安装了Java(或任何应用程序)

检查是否在用户设备上安装了“健康”应用程序。(迅速)

检查 Windows 上是否安装了Wireguard 应用程序的可靠方法?

如何检查用户是否在网页中安装了移动应用程序?

在运行Add-AppxPackage之前检查是否安装了应用程序版本

检查是否安装了第三方应用程序?

如何检查是否通过iPhone上的网页安装了应用程序?

Bash脚本自动化检查是否安装了特定版本的应用程序

如何以编程方式检查Android中是否安装了应用程序?

Xamarin:检查IOS设备中是否安装了任何特定的应用程序

从Deeplink重定向时,如何检查用户设备中是否安装了应用程序

使用终端检查MacOS上是否安装了应用程序

节点JS:如何检查目标计算机上是否安装了从属应用程序?

以编程方式检查用户以前是否安装了应用程序

iMessage应用程序可检测接收方是否安装了相同的应用程序

是否可以在运行时可靠地检测哪个商店安装了Android应用程序(Google Play或Amazon Market)?

确定Google用户的域是否安装了我的市场应用程序

如何检查是否同时安装了应用程序(对于任何用户)并使其升级而不是安装?

苹果是否批准检查设备上是否安装了另一个应用程序?

从 Ubuntu 软件安装应用程序时是否安装了依赖项?

我可以检查用户安装了哪些iOS应用程序以及购买了哪些应用程序?

Android:检测附近的设备是否安装了某些应用程序

如何确认是否已从Deeplink / referlink安装了应用程序?

Windows是否按应用程序或系统范围安装了视频编码器?

我如何知道Safari是否已在iPhone上安装了应用程序

popen 可以找出是否安装了某个应用程序吗?

确定是否使用Titanium首次安装了该应用程序

Android:如何知道是否已使用ADB在Android设备中安装了任何应用程序?

检测Linux的C应用程序中是否安装了USB磁盘