Я знаю, что это, вероятно, длинный, но есть ли способ обнаружить программно, было ли приложение размещено в магазине приложений Amazon против Google Play? Я хотел бы связать с магазином приложений, из которого было загружено приложение, и я бы предпочел не иметь двух разных APK с такой разницей, если этого можно избежать.
Определите, было ли приложение Android загружено из Google Play против Amazon vs Other
Ответ 1
Как недавно, Amazon Appstore возвращает значные значения для PackageManager.getInstallerPackageName()
PackageManager pm = context.getPackageManager();
String installerPackageName = pm.getInstallerPackageName(context.getPackageName());
if ("com.android.vending".equals(installerPackageName)) {
//do google things
} else if ("com.amazon.venezia".equals(installerPackageName)) {
//do amazon things
}
Смотрите здесь: https://forums.developer.amazon.com/forums/thread.jspa?threadID=680
Примеры ставок для этого приложения:
Google Play -
рынок://Детали ID = PACKAGANAME
Магазин Amazon
или
AMZN://приложение/андроид р = com.amazon.mp3
Ответ 2
Самый простой способ - использовать разные коды версий или имена между Amazon и Google Play. Затем вы можете использовать PackageManager.getPackageInfo для извлечения этих значений и соответствующим образом выбрать ссылку на хранилище приложений.
Пример: суффикс всех имен вашей версии Amazon с ".65", то есть 1.0.65. Затем используйте
public boolean isAmazon(Context context) {
String versionName = "";
try {
versionName = context.getPackageManager().getPackageInfo(
getPackageName(), 0).versionName;
} catch (NameNotFoundException e) {
// Can't find itself...
}
return versionName.endsWith(".65");
}