Während in den meisten Fällen können Sie den Shop-Namen erhalten, indem eine Überprüfung ähnlich wie dies zB:
final PackageManager packageManager = getPackageManager();
try {
final ApplicationInfo applicationInfo = packageManager.getApplicationInfo(getPackageName(), 0);
if ("com.android.vending".equals(packageManager.getInstallerPackageName(applicationInfo.packageName))) {
// App was installed by Play Store
} else if ("com.amazon.venezia".equals(packageManager.getInstallerPackageName(applicationInfo.packageName))) {
// App was installed by Amazon Appstore
} else {
// App was installed from somewhere else
}
} catch (final NameNotFoundException e) {
e.printStackTrace();
}
"com.andr oid.vending“ist Google Play Store und
‚com.amazon.venezia‘ist der Amazon Appstore, und
null, wenn es
Die Ergebnisse Sideload wurde jedoch unzuverlässig sein könnte, wie zum Beispiel während der Beta-Test eines Speicher könnte diesen Wert nicht gesetzt, und außerdem ist es möglich, Ihre App zu Sideload die Paketnamen des Installateurs angeben, die als Speichername interpretiert werden könnten:
adb install -i <INSTALLER_PACKAGE_NAME> <PATH_TO_YOUR_APK>
Sie möchten vielleicht mit Namen anderen Paket für verschiedene Läden zum Beispiel prüfen, "com.example.yourapp" für Google und "com.example.yourapp.amazon" für Amazon - Sie können eas Setzen Sie diese in Ihrem Gradle-Skript.
Warum sollte nicht einfach eine Variable in jeder Version enthalten sein, die anzeigt, wo sie hochgeladen wurde? Oder haben Sie einen OptionPane als Benutzer ... –
'PackageManager' und' getInstallerPackageName() 'sagen Ihnen, was das Installationsprogramm war. Sie müssten Tests ausführen, um zu sehen, was in Ihren verschiedenen Szenarien zurückgegeben wird. – CommonsWare
@Fran Wenn Sie experimentiert haben, was haben Sie sich einfallen lassen? – ahsteele