У меня есть приложение в Google Play, Amazon, Samsung Apps, и я планирую загрузить его в другие магазины. Я не хочу собирать отдельную сборку для каждого магазина. Есть ли способ определить, в каком магазине установлено приложение, если одно и то же приложение отправлено в разные магазины?
Как приложение для Android может определить, какой магазин его установил?
Ответы (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
}
Я обнаруживаю 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) просто не устанавливают идентификатор установщика пакета.
Нет, если вы не делаете отдельные сборки. Но с хорошим сценарием установки/муравья maven вы можете легко автоматизировать этот процесс.