Как отличить приложение Android от Amazon Kindle Fire?
Недавно я отклонил свое приложение с портала распространения приложений Amazon Mobile App с аргументом о том, что пункт меню " > " Оценить приложение "перенаправляется в Google Play Store.
Чтобы быть принятым, он должен перенаправить на App Store Amazon, 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?
Ответы
Ответ 1
Вы можете прочитать их:
android.os.Build.MANUFACTURER
android.os.Build.MODEL
В Kindle Fire они возвращают значения "Amazon" и "Kindle Fire".
http://developer.android.com/reference/android/os/Build.html
Этого должно быть достаточно, чтобы ваше приложение решило, что оно работает на Kindle Fire.
ОБНОВЛЕНИЕ:
Предыдущее работает для Gen 1 Kindle Fire.
Новые модели Kindle Fire имеют разные значения для android.os.Build.MODEL.
https://developer.amazon.com/sdk/fire/specifications.html
Ответ 2
Хорошие новости! По-видимому последняя версия магазина Amazon наконец устанавливает PackageManager.getInstallerPackageName()
до "com.amazon.venezia"
в отличие от Google Play "com.android.vending"
.
Старые приложения все равно вернут null
, и я на самом деле не проверял API, или если установка нового Хранилища, а затем обновление старого приложения установят установщик. Но установка нового приложения и проверка /data/system/packages.xml
показывают, что installer
правильно установлен.
Ответ 3
Обязательно обновите проверку 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
Ответ 4
Обнаружение Kindle Fire является частью решения, но не для всего решения. Последнее текущее сообщение в этот поток, похоже, доходит до сути "было ли это установлено из магазина Amazon", что вполне может быть Kindle Fire, или нет!
< snip, слегка отредактированный >
Правильный способ определить, установлено ли приложение через Appstore в рабочем режиме, используется метод onSdkAvailable(boolean isSandboxMode)
.
Документация по метод onSdkAvailable (boolean isSandboxMode). Аннотация:
- Этот обратный вызов вызывается после регистрации
PurchasingObserver
с помощью PurchasingManager
- Этот метод сообщает вам, работает ли платформа закупки в режиме песочницы с тестовыми данными или в режиме производства с реальными данными.
- Если ваше приложение загружено через Amazon Client,
isSandboxMode
вернет false
- Инициирующий метод следует вызывать в рамках метода
onStart()
жизненного цикла
При регистрации вашего PurchaseObserver
вы получите асинхронный вызов, onSdkAvailable(Boolean isSanboxMode)
. Если приложение загружается через Amazon Client, то isSandboxMode
всегда будет возвращать false. Этот код будет работать успешно в режиме производства, однако в среде разработки/тестирования isSandboxMode всегда будет возвращать значение true, поскольку приложение не сглажено через клиента Amazon в тестовой среде.
Ответ 5
Я бы просто создал 2 приложения. Один для Android. Один для Kindle.
Ответ 6
Вы можете включить ссылку на общую веб-страницу, а затем веб-страницу может перенаправить трафик в AppStore Amazon или в Google Play.
Например, вы можете включить ссылку www.yourwebsite.com/getapp, которая затем перенаправляет трафик на Google Play или Amazon.
Amazon вряд ли согласится с ссылкой в Google Play, даже с логикой.
Ответ 7
Фактически вы можете вообще пропустить проверку и просто ссылаться на рынок://details? id = packagename