【发布时间】:2019-02-13 10:50:13
【问题描述】:
在我的应用中,我使用一些实现来检查应用是否是从 Google Play 商店下载的。否则它不会启动。 为此,我通过检查名称是否为 com.android.vending 来使用 getInstallerPackageName()。
这基本上适用于我的所有设备,但在 Google Play 中,发布前的报告告诉我,9 个设备中有 2 个通过此方法返回 null。 现在有两种可能。此方法有时会返回 null,即使它是从 Google Play 商店下载的,也可能是 null,因为发布前报告会以某种方式导致它。当它为空时,这通常意味着该 apk 不是从 Google Play 商店下载的。我不知道这个发布前报告在后台是如何工作的。也许 APK 在部署到这些“测试设备”之前会在后台以某种方式进行处理。是否有人知道该值是否可能为空,即使它是从 Google Play 商店下载的?
【问题讨论】:
-
可能是供应商特定的问题?
-
当您使用
adb install yourApk.apk或通过蓝牙共享APK 时,您期望什么样的输出? -
@Shark 这就是问题所在,如果它是特定于供应商的问题。如果是这样,我必须从我的应用程序中删除此检查。在此发布前的报告中,Google Pixel 2 和三星 Galaxy S9 为空。但它适用于 Google Play 开发者控制台中发布前报告中的所有其他测试设备。当您不通过 Google Play 安装它时,这意味着通过 adb install,则它为空(预期值是多少)。我不允许它从 Google Play 商店以外的其他地方安装它。我认为唯一真正的解决方案是使用三星 Galaxy S9 找到一些 1 在真实设备上进行检查。
-
这不是批评,但您可能需要重新考虑不允许从 GooglePlay 以外的任何地方进行安装;一些国家的用户拥有非常昂贵的移动数据(并且 wifi 覆盖率非常低),他们只是通过蓝牙发送 APK 来“共享”应用程序。所以,这只是一个提醒。
-
@Shark 我的应用不会在这些国家发布,所以这可能不会成为问题。如果我在接下来的几天内没有找到解决此问题的方法,那么无论如何我都必须禁用它。
标签: android google-play apk