检测应用程序正在 Kindle Fire 上运行

Posted

技术标签:

【中文标题】检测应用程序正在 Kindle Fire 上运行【英文标题】:Detect app is running on Kindle Fire 【发布时间】:2012-01-08 17:24:50 【问题描述】:

有谁知道如何检测应用程序是否在 Kindle Fire 上运行?

如果在 Kindle Fire 上运行,我的应用需要关闭一些功能,并且我想使用与 Google Marketplace 相同的构建版本。

【问题讨论】:

【参考方案1】:

您可以阅读android.os.Build.MANUFACTURERandroid.os.Build.MODEL。在第一代 Kindle Fire 上,它们分别是“Amazon”和“Kindle Fire”。有关较新 Kindle Fire 设备的型号代码,请参阅亚马逊开发者网站上的 Device and Feature Specifications。

【讨论】:

还可以查看 ***.com/questions/19592927/… 以查看该 apk 是否是从亚马逊商店安装的【参考方案2】:

基于亚马逊的Tablet Device Specifications我目前使用这个代码:

public static boolean isKindleFire() 
    return android.os.Build.MANUFACTURER.equals("Amazon")
            && (android.os.Build.MODEL.equals("Kindle Fire")
                || android.os.Build.MODEL.startsWith("KF"));

根据该表,制造商字符串始终等于“Amazon”,并且型号字符串对于第一个 2011 型号是“Kindle Fire”,或者对于所有后续型号都以“KF”开头。

【讨论】:

所以,刚刚有一个应用被亚马逊拒绝,因为它正在启动谷歌应用商店,这取决于这个测试。不幸的是,我没有Build.* 的失败值,但我用equalsIgnoreCase 代替equals 重新提交了表达式的前两部分,并且重新提交通过了。所以现在可能有必要了。 @nmr - equalsIgnoreCase 可能不会受到伤害,但我不相信。也许他们在非 Kindle Fire 设备上进行了测试? AFAIK,您几乎可以在任何 Android 设备上安装他们的 App Store。我认为您应该检查是否可以在此测试之外(或代替)使用 Google Play。 是的,谁知道呢,亚马逊并不是一个完美的演员,他们可能已经在非 Kindle 上进行了测试,尽管我相对确定我明确禁止在它们上分发。我真的应该按照你描述的方式来做,但是代码的编写方式需要一些重组来支持。 为什么要检查模型?我想大多数人只需要看看它是否是亚马逊设备,这样他们就可以更改他们的应用程序以不使用任何 Google 服务。

以上是关于检测应用程序正在 Kindle Fire 上运行的主要内容,如果未能解决你的问题,请参考以下文章

Nexus 7 和 Kindle Fire HD,想法不同

ADB 无法在 Windows 7 上检测到我的 Kindle Fire,但设备管理器可以

如何区分 Android 应用程序是不是在 Amazon Kindle Fire 上运行?

在 kindle fire 上调试安卓应用

休眠后,Android应用程序在kindle fire上关闭

Kindle Fire 推送通知示例应用程序