如何区分Android应用程序是否在亚马逊Kindle Fire上运行?

时间:2012-07-11 21:11:21

标签: android kindle-fire

我最近在亚马逊移动应用发布门户网站上拒绝了我的应用程序,其中包含菜单 - "评估应用程序"选项重定向到Google Play商店。

为了被接受,它应该重定向到Amazon Appstore,下载URL必须是http://www.amazon.com/gp/mas/dl/android?p=packagename,这当然是有道理的。

所以我需要这样的东西:

String url = isKindle 
    ? "http://www.amazon.com/gp/mas/dl/android?p=packagename" 
    : "https://play.google.com/store/apps/details?id=packagename";

问题是:我如何区分应用程序是在Kindle Fire上运行还是在" native" Android系统?

7 个答案:

答案 0 :(得分:27)

你可以阅读这些:

android.os.Build.MANUFACTURER 
android.os.Build.MODEL

在Kindle Fire上,这些值会返回'亚马逊'和'Kindle Fire'的值。

http://developer.android.com/reference/android/os/Build.html

这应该足以让您的应用确定它是在Kindle Fire上运行。


更新:

以前的作品为第1代Kindle Fire。

Kindle Fire的新型号具有不同的android.os.Build.MODEL值。

https://developer.amazon.com/sdk/fire/specifications.html

答案 1 :(得分:6)

好消息! Apparently最新版本的亚马逊商店最终将PackageManager.getInstallerPackageName()设置为"com.amazon.venezia",与Google Play的"com.android.vending"形成鲜明对比。

较旧的应用仍然会返回null,我实际上并未验证API,或者是否安装新商店然后升级旧应用将设置安装程序。但是,安装新应用并检查/data/system/packages.xml表示installer已正确设置。

答案 2 :(得分:5)

请务必更新Build.MODEL检查以处理新的Kindle Fire设备。

  • KFOT = Kindle Fire
  • KFTT = Kindle Fire HD 7“
  • KFJWI = Kindle Fire HD 8.9“Wi-Fi
  • KFJWA = Kindle Fire HD 8.9“WAN

这些列在图表底部https://developer.amazon.com/sdk/fire/specifications.html

答案 3 :(得分:4)

检测Kindle Fire是解决方案的一部分,但不是整个解决方案。 this thread中的(当前)最后一篇文章似乎达到了“这是从亚马逊商店安装”的核心 - 这可能是一个Kindle Fire,或者不是!

< snip,稍加编辑>

确定是否在生产模式下通过Appstore安装应用程序的正确方法是使用onSdkAvailable(boolean isSandboxMode)方法。

onSdkAvailable(boolean isSandboxMode) method上的文档。摘要:

  • 在您使用PurchasingObserver
  • 注册PurchasingManager后,系统会调用此回调
  • 此方法告诉您采购框架是在沙箱模式下运行测试数据,还是在生产模式下运行真实数据
  • 如果您的应用是通过亚马逊客户端下载的,isSandboxMode将返回false
  • 应在onStart()生命周期方法
  • 中调用启动方法

注册PurchaseObserver后,您会收到异步回拨onSdkAvailable(Boolean isSanboxMode)。如果通过Amazon Client下载应用程序,则isSandboxMode将始终返回false。此代码将在生产模式下成功运行,但在开发/测试环境中,isSandboxMode将始终返回true,因为应用程序未通过测试环境中的Amazon Client进行下载。

答案 4 :(得分:3)

我只会创建2个应用。一个用于Android。一个用于Kindle。

答案 5 :(得分:0)

您可以添加指向常规网页的链接,然后该网页可以将流量重定向到Amazon AppStore或Google Play。

例如,您可以添加链接www.yourwebsite.com/getapp,然后将流量重定向到Google Play或亚马逊。

亚马逊不太可能接受谷歌播放链接,即使背后有逻辑。

答案 6 :(得分:0)

实际上你可以完全跳过支票并链接到market:// details?id = packagename