Определите, было ли приложение Android загружено из Google Play против Amazon vs Other - программирование
Подтвердить что ты не робот

Определите, было ли приложение Android загружено из Google Play против Amazon vs Other

Я знаю, что это, вероятно, длинный, но есть ли способ обнаружить программно, было ли приложение размещено в магазине приложений Amazon против Google Play? Я хотел бы связать с магазином приложений, из которого было загружено приложение, и я бы предпочел не иметь двух разных APK с такой разницей, если этого можно избежать.

4b9b3361

Ответ 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

http://www.amazon.com/gp/mas/dl/android?p=PACKAGENAME

или

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");
}