我最近从亚马逊移动应用程序分发门户网站拒绝了我的应用程序,并声称菜单 – >“评价应用程序”选项redirect到Google Play商店。
为了被接受,它应该redirect到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上还是在“本机”Android系统上运行?
你可以阅读这些:
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具有不同的值。
好消息! 显然 ,亚马逊商店的最新版本最终将PackageManager.getInstallerPackageName()
为"com.amazon.venezia"
,与Google Play的"com.android.vending"
形成鲜明对比。
旧的应用程序仍然会返回null
,而且我还没有实际validationAPI,或者安装新的商店,然后升级旧的应用程序将设置安装程序。 但是,安装一个新的应用程序并检查/data/system/packages.xml
表明installer
已正确设置。
请务必更新Build.MODEL检查以处理新的Kindle Fire设备。
这些在https://developer.amazon.com/sdk/fire/specifications.html图表的底部列出
检测Kindle Fire是解决scheme的一部分,但不是整个解决scheme。 在这个主题中的(当前)最后一篇文章似乎到了“这是从亚马逊商店安装”的核心 – 这可能是一个Kindle的火,或不!
稍微编辑一下
通过使用onSdkAvailable(boolean isSandboxMode)
方法来确定在生产模式下是否通过Appstore安装应用程序的正确方法。
onSdkAvailable(boolean isSandboxMode)方法的文档。 抽象:
PurchasingManager
注册您的PurchasingObserver
,将调用此callback isSandboxMode
将返回false onStart()
生命周期方法中调用启动方法 在注册您的PurchaseObserver
,您会得到一个asynchronouscallback, onSdkAvailable(Boolean isSanboxMode)
。 如果应用程序通过Amazon客户端下载,则isSandboxMode
将始终返回false。 此代码将在生产模式下成功运行,但是在开发/testing环境中,isSandboxMode将始终返回true,因为应用程序未在testing环境中通过Amazon Client进行downlaoded。
我只会创build2个应用程序。 一个为Android。 一个用于Kindle。
您可以包含指向一般网页的链接,然后该网页可以将stream量redirect到Amazon AppStore或Google Play。
例如,您可以添加链接www.yourwebsite.com/getapp,然后将stream量redirect到Google Play或Amazon。
亚马逊不太可能接受Google Play链接,即使有逻辑背后。
其实你可以跳过这个检查,只需链接到market:// details?id = packagename