【发布时间】:2013-07-03 06:36:55
【问题描述】:
我知道一个可以在 Nook、Kindle 和 Google play 中运行的应用程序。我试图隐藏一些仅适用于 Kindle 设备的按钮。我在这种情况下使用Modules.manufacturer.equals("Amazon"),它适用于设备。但是当我在kindle商店提交我的应用程序以供审核时,它没有。每次他们拒绝该应用程序时,因为该按钮重定向到谷歌播放。它对我来说是如此有线..任何建议。
提前致谢。
【问题讨论】:
我知道一个可以在 Nook、Kindle 和 Google play 中运行的应用程序。我试图隐藏一些仅适用于 Kindle 设备的按钮。我在这种情况下使用Modules.manufacturer.equals("Amazon"),它适用于设备。但是当我在kindle商店提交我的应用程序以供审核时,它没有。每次他们拒绝该应用程序时,因为该按钮重定向到谷歌播放。它对我来说是如此有线..任何建议。
提前致谢。
【问题讨论】:
实际上可以为其他设备下载 Amazon Appstore 应用程序,而不仅仅是 Kindle 设备,因此修复它的唯一方法是为 Amazon Appstore 和 Google Play 提交不同的二进制文件。
【讨论】:
PackageManager.getinstallerPackageName()。看我的回答:stackoverflow.com/a/20524255/328936
亚马逊应用商店可在非 Kindle 设备上使用,并且此类设备在审核期间使用。因此,您不能依赖manufacturer。
我知道有三种可能的解决方案,虽然我自己还没有真正尝试过其中任何一种。
PackageManager.getInstallerPackageName() 在通过 Google 的 Play 商店安装应用时返回 com.android.vending,在从亚马逊应用商店安装应用时返回 com.amazon.venezia。
但是,如果应用程序被侧载,此函数将返回null,因此为了通过亚马逊的审核流程,您必须默认假定您在亚马逊平台上运行。
亚马逊重新签名您的应用。您可以检查您的应用程序的签名是否与您签署时的签名相同,然后采取相应措施。您可以在 Jakar's answer, here 中找到有关如何执行此操作的详细信息(使用 PackageManager.GET_SIGNATURES)。
这可能是最可靠的解决方案。
【讨论】: