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

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

2 ответа

Решение

Совсем недавно 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

Примеры для оценки этого приложения ссылки:

Гугл игры-

Рынок: // Детали ID = PACKAGANAME

Amazon Store

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

или же

AMZN: // приложение / андроид р =com.amazon.mp3

Самый простой способ - использовать разные коды версий или имена между 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");
}
Другие вопросы по тегам