我最近在亚马逊移动应用发布门户网站上拒绝了我的应用程序,其中包含菜单 - "评估应用程序"选项重定向到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系统?
答案 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值。
答案 1 :(得分:6)
PackageManager.getInstallerPackageName()
设置为"com.amazon.venezia"
,与Google Play的"com.android.vending"
形成鲜明对比。
较旧的应用仍然会返回null
,我实际上并未验证API,或者是否安装新商店然后升级旧应用将设置安装程序。但是,安装新应用并检查/data/system/packages.xml
表示installer
已正确设置。
答案 2 :(得分:5)
请务必更新Build.MODEL检查以处理新的Kindle Fire设备。
这些列在图表底部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