Ich muss erkennen, dass meine Anwendung von Google Play oder anderen Markt installiert ist, wie könnte ich diese Informationen erhalten?Woher weiß man, dass eine Anwendung von Google Play oder Side-Load installiert ist?
Antwort
Die Klasse PackageManager
liefert die getInstallerPackageName-Methode, die Ihnen den Paketnamen des installierten Pakets mitteilt. Seitengeladene Apps enthalten keinen Wert.
BEARBEITEN: Hinweis @ mttmllns 'answer below in Bezug auf den Amazon App Store.
Und FYI apparently die neueste Version des Amazon-Store setzt schließlich PackageManager.getInstallerPackageName()
-"com.amazon.venezia"
als auch mit Google Play-"com.android.vending"
zu kontrastieren.
Kann keine statische Referenz auf die nicht statische Methode getInstallerPackageName (String) vom Typ PackageManager erstellen. –
Jeder Appstore hat eine eigene MarketApp auf Playstore, die wiederum ihre APKs (Pakete) installiert. Der Paketmanager getInstaller ...() gibt den Paketnamen der marketapp zurück, die eine bestimmte apk installiert hat. Z.B. com.amazon.venezia ist der Paketname der amazon marketapp. Ziemlich clever, denn dann kann PlayStore steuern, welche Marketapps vertrauenswürdig sind. Dies soll schließlich alle nicht vertrauenswürdigen Sideloads verhindern. Ich stelle fest, dass die Verbreitung neuer Android OS-Versionen dramatisch sinkt. KitKat könnte zum Defacto-Standard werden. –
Ich benutze diesen Code zu überprüfen, ob ein Build aus einem Geschäft oder Sideload heruntergeladen wurde:
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;
}
Es funktioniert sehr gut. – ttom
@AbhishekB welche Version von Android bist du? Bist du in einem Emulator? – MattC
@AbhishekB Ich kenne keine Möglichkeit, die Entstehung von seitengeladenen Apps zu finden. Ich bin nicht sicher, wie das überhaupt verfolgt werden würde, da es technisch gesehen nur eine APK-Datei ist, die irgendwo auf das Gerät geladen wird und dann vermutlich über den PackageManager installiert wird. – MattC