У меня есть приложение в Google Play, Amazon, Samsung Apps, и я планирую загрузить в другие магазины. Я не хочу составлять отдельную сборку для каждого магазина. Есть ли способ определить, какое приложение установлено в магазине, если одно и то же приложение отправлено в разные магазины?
Как приложение Android может определить, какой магазин установил его?
Ответ 1
Вам придется расширить это для каждого дополнительного магазина, но это должно помочь вам начать
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
}
Ответ 2
Я обнаруживаю установщик как это внутри 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
}
Я тестировал это в своем последнем приложении, и он передал приложение в игру googe, магазин amazon и магазин slideme.org
Обновление: похоже, иногда есть имя пакета установщика com.google.android.feedback, которое, похоже, также связано с хранилищем google, хотя я видел в своем тестовом приложении Google Analytics, что com.android.vending намного чаще. Поэтому, если вы хотите сделать это еще точнее, вам также следует обращаться с этим пакетом установщика. Также обратите внимание, что некоторые рынки (например, slideme.org) просто не устанавливают идентификатор установки пакета вообще.
Ответ 3
Нет, если вы не делаете отдельные сборки. Но с хорошей настройкой maven/ ant script вы могли бы легко автоматизировать этот процесс.