У меня есть приложение в Google Play, Amazon, Samsung Apps, и я планирую загрузить в другие магазины. Я не хочу компилировать отдельную сборку для каждого магазина. Есть ли способ определить, какое приложение установлено в магазине, если такое же приложение отправлено в разные магазины?Как приложение Android может определить, какой магазин установил его?
ответ
Вы должны расширить это для каждого дополнительного магазина, но это должно вам начать
if (PackageManager.getInstallerPackageName().equals("com.android.vending")
{
//do google things
}
else if (PackageManager.getInstallerPackageName().equals("com.amazon.venezia")
{
//do amazon things
}
Нет, если вы не делаете отдельные сборки. Но с хорошим сценарием maven setup/ant вы можете легко автоматизировать этот процесс.
я обнаруживаю 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
}
Я испытал это в мое последнее приложение, и он передал приложение в игру googe, магазин amazon и магазин slideme.org
Обновление: look например, есть имя пакета установщика com.google.android.feedback, который, похоже, также относится к хранилищу google, хотя я видел в аналитике google моего теста, что com.android.vending - это далеко более частый. Поэтому, если вы хотите сделать это еще точнее, вам также следует обращаться с этим пакетом установщика. Также обратите внимание, что некоторые рынки (например, slideme.org) просто не устанавливают идентификатор установки пакета вообще.
Смотрите также: Can PackageManager.getInstallerPackageName() tell me that my app was installed from Amazon app store?
Я не нашел это, чтобы быть надежным в прошлом. Я экспериментировал с отправкой getInstallerPackageName при установке на мой веб-сервер с популярным приложением, загруженным на 6 рынков, и 41% даже не были установлены – jamesc