web-dev-qa-db-fra.com

Comment savoir qu'une application est installée à partir de Google Play ou à chargement latéral?

Je dois détecter que mon application est installée sur Google Play ou sur un autre marché, comment puis-je obtenir ces informations?

52
ttom

La classe PackageManager fournit la méthode getInstallerPackageName qui vous indiquera le nom du package de tout ce qui a installé le package que vous spécifiez. Les applications chargées latéralement ne contiendront pas de valeur.

[~ # ~] éditez [~ # ~] : Notez @mttmllns ' réponse ci-dessous concernant l'App Store d'Amazon.

50
MattC

Et pour info apparemment la dernière version de la boutique Amazon définit enfin PackageManager.getInstallerPackageName() à "com.Amazon.venezia" aussi pour contraster avec le jeu de Google Play "com.Android.vending".

24
mttmllns

J'utilise ce code pour vérifier si une version a été téléchargée depuis un magasin ou téléchargée de façon latérale:

public static boolean isStoreVersion(Context context) {
    boolean result = false;

    try {
        String installer = context.getPackageManager()
                                    .getInstallerPackageName(context.getPackageName());
        result = !TextUtils.isEmpty(installer);
    } catch (Throwable e) {          
    }

    return result;
}

Kotlin:

  fun isStoreVersion(context: Context) =
    try {
      context.packageManager
        .getInstallerPackageName(context.packageName)
        .isEmpty()
    } catch (e: Throwable) {
      false
    }
18
Philipp E.

Si vous cherchez à identifier et à restreindre l'application à chargement latéral. Google a trouvé la solution pour identifier le problème.

Vous pouvez suivre comme ci-dessous

Projets build.gradle:

buildscript {
 dependencies {
  classpath 'com.Android.tools.build:bundletool:0.9.0'
 }
}

Module de l'application build.gradle:

implementation 'com.google.Android.play:core:1.6.1'

Classe qui étend l'application:

public void onCreate() {
if (MissingSplitsManagerFactory.create(this).disableAppIfMissingRequiredSplits()) {
    // Skip app initialization.
    return;
}
super.onCreate();
.....

}

Avec cette intégration, google identifiera automatiquement s'il manque des apk séparés et affiche une fenêtre contextuelle indiquant " L'installation a échoué " et il redirige également vers le téléchargement sur Play Store écran où l'utilisateur peut installer correctement l'application via le Google Play Store.

Vérifiez ceci lien pour plus d'informations.

J'espère que cela t'aides.

2
Naveen T P