【问题标题】:Is it possible that getInstallerPackageName() is null when app downloaded from Google Play Store?从 Google Play 商店下载应用程序时 getInstallerPackageName() 是否可能为空?
【发布时间】: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


【解决方案1】:

这听起来像是 Google Play 发布前报告中的实施细节错误。请您联系 Google Play 支持并让他们知道问题所在。检查您的安装是否来自 Google Play 应该是合理的做法。即使对于数据昂贵的用户通过 P2P 共享进行的安装,如果您使用 Google Play P2P in ShareIt / Xender / Files Go,安装程序仍应为 Google Play。

以上建议适用于任何人 - 以下是针对原始提问者的:

我将联系发布前报告团队并询问他们(我在 Google 工作)。请您联系 Google Play 支持并让他们知道问题所在。如有必要,告诉他们我要求您这样做,并要求他们将任何错误发送给我(他们应该能够通过名称找到它们)。如果您不得不从您的应用中删除支票,我会非常难过。

【讨论】:

  • 我已经在两三天前发送了一份报告,以了解这里发生了什么。还没有答案。但这似乎不是 Google Play 的错误,因为为什么其他 7 台设备都可以工作?如果是一个错误,那么任何设备都不应该在 imo 上工作。当我做了一些研究时,我发现三星在几年前的早期版本中没有(!)实现getInstallerPackageName(),所以它总是返回null。我还读到 HTC 也返回 null 。显然这是糟糕的供应商的问题。由于所有这些不确定性,我暂时不使用此功能发布到 PROD(直到我更清楚)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-11
  • 1970-01-01
相关资源
最近更新 更多