Мне нужно проверить, что приложение было установлено через apk или из Google Play.
У меня есть apk, который был загружен из Google Play, а также приложение было доступно в Google Play. Я хочу выделить два случая.
Я уже читал об этом вопросе ниже, но речь идет о том, в каком магазине приложений было установлено приложение, и это было не мне. Как диспетчер пакетов Android узнает, что установить с веб-сайта торговой площадки?
Есть ли способ проверить, было ли приложение установлено с помощью apk или нет, программно самим приложением? Любая помощь будет оценена по достоинству.
String strCheck = getPackageManager()
.getInstallerPackageName(getPackageName());
вы получите значение в strCheck, если приложение установлено из игрового магазина.
Имя пакета установщика
Google Play магазин:
com.android.vending
установлен из магазина Google Play и извлечен apk, установлен снова:
com.google.android.packageinstaller
скачать из Google Play Store опубликовать, список релизов приложений:
ноль
хорошо, позволь мне проверить ... если у меня что-нибудь получится ... я дам тебе знать
О, ты прав. Я проверил несколько случаев и дополню ваш ответ подробностями. Спасибо!
Попробуй это
PackageManager pm = getPackageManager();
if (pm.getInstallerPackageName(getPackageName()).equals("com.android.vending"){
//App is from google play
//do something
}
приложение с неизвестным источником вернет пустую строку
Я использую приведенный ниже код, чтобы проверить, был ли apk загружен из магазина или загружен неопубликованно:
private boolean isStoreVersion(Context context) {
boolean isStoreVersion= false;
try {
String installer = context.getPackageManager()
.getInstallerPackageName(context.getPackageName());
isStoreVersion= !TextUtils.isEmpty(installer);
} catch (Throwable e) {
e.printStackTrace();
}
return isStoreVersion;
}
Спасибо за ответ, но моя проблема в том, что приложение было загружено из Google Play. Это означает, что в обоих случаях я могу получить одинаковые имена пакетов установщика.