Как приложение для Android может определить, какой магазин его установил?

У меня есть приложение в Google Play, Amazon, Samsung Apps, и я планирую загрузить его в другие магазины. Я не хочу собирать отдельную сборку для каждого магазина. Есть ли способ определить, в каком магазине установлено приложение, если одно и то же приложение отправлено в разные магазины?


person Max    schedule 13.07.2013    source источник


Ответы (3)


Вам придется расширять это для каждого дополнительного магазина, но это должно помочь вам начать работу.

if (context.getPackageManager().getInstallerPackageName(context.getPackageName()).equals("com.android.vending")
{
//do google things
}
else if (context.getPackageManager().getInstallerPackageName(context.getPackageName()).equals("com.amazon.venezia")
{
//do amazon things
}
person prestomation    schedule 27.07.2013
comment
Я НЕ нашел это надежным в прошлом. Я экспериментировал с отправкой getInstallerPackageName при установке на свой веб-сервер с популярным приложением, загруженным на 6 торговых площадок, и 41% даже не были установлены. - person jamesc; 13.08.2013
comment
Если вы используете это для перенаправления пользователя в магазин, используйте переключатель и по умолчанию используйте Google Play Store. - person Pierre; 19.06.2019

Я обнаруживаю Installer внутри MainActivity следующим образом:

//is installed via amazon, google?
String installerId = null;
try {
    installerId = this.getPackageManager().getInstallerPackageName(this.getPackageName());
} catch (Exception e) {
    //just in case...
}

if ("com.amazon.venezia".equals(installerId)) {
    // amazon 
} else if ("com.android.vending".equals(installerId)) {
    // google
} else {
    // others & unknown ones
}

Я протестировал это в своем последнем приложении, и оно прошло отправку приложения в Google Play, магазине Amazon и магазине Slideme.org.

Обновление: похоже, что иногда встречается имя пакета установщика com.google.android.feedback, которое, похоже, также связано с магазином Google, хотя я видел в своем тесте Google Analytics приложения, что com.android.vending встречается гораздо чаще. Поэтому, если вы хотите сделать это еще более точным, вам также следует работать с этим установочным пакетом. Также обратите внимание, что некоторые рынки (например, slideme.org) просто не устанавливают идентификатор установщика пакета.

См. также: Может PackageManager.getInstallerPackageName() сообщить мне, что мое приложение было установлено из магазина приложений Amazon?

person donfuxx    schedule 26.01.2014

Нет, если вы не делаете отдельные сборки. Но с хорошим сценарием установки/муравья maven вы можете легко автоматизировать этот процесс.

person Warpzit    schedule 13.07.2013