Как проверить, установлено ли приложение apk или нет

Мне нужно проверить, что приложение было установлено через apk или из Google Play.

У меня есть apk, который был загружен из Google Play, а также приложение было доступно в Google Play. Я хочу выделить два случая.

Я уже читал об этом вопросе ниже, но речь идет о том, в каком магазине приложений было установлено приложение, и это было не мне. Как диспетчер пакетов Android узнает, что установить с веб-сайта торговой площадки?

Есть ли способ проверить, было ли приложение установлено с помощью apk или нет, программно самим приложением? Любая помощь будет оценена по достоинству.

3
0
2 122
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий
String strCheck = getPackageManager()
                .getInstallerPackageName(getPackageName());

вы получите значение в strCheck, если приложение установлено из игрового магазина.

Имя пакета установщика

Google Play магазин: com.android.vending

установлен из магазина Google Play и извлечен apk, установлен снова:

com.google.android.packageinstaller

скачать из Google Play Store опубликовать, список релизов приложений:

ноль

Спасибо за ответ, но моя проблема в том, что приложение было загружено из Google Play. Это означает, что в обоих случаях я могу получить одинаковые имена пакетов установщика.

Stanley Ko 03.04.2018 07:33

хорошо, позволь мне проверить ... если у меня что-нибудь получится ... я дам тебе знать

Anuj Zunjarrao 03.04.2018 07:37

О, ты прав. Я проверил несколько случаев и дополню ваш ответ подробностями. Спасибо!

Stanley Ko 03.04.2018 08:58

Попробуй это

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;

}

Другие вопросы по теме