çoğu durumda buna benzer bir çek dahil ederek mağaza adını almak mümkün olmakla birlikte:
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" Google Store'u ve Play
'com.amazon.venezia' Amazon Appstore olduğunu ve beta sırasında örneğin,
sonuç ancak güvenilmez olabilir yükledikleri edildi
boş bir mağaza test Bu değeri ayarlayın ve yanında bir mağaza adı olarak yorumlanabilecek yükleyici paket adını belirterek uygulamanızı sideload mümkündür olmayabilir:
adb install -i <INSTALLER_PACKAGE_NAME> <PATH_TO_YOUR_APK>
Örneğin, farklı mağazalar için farklı paket isimleri olan düşünebilirsiniz
Google için "com.example.yourapp" ve Amazon için "com.example.yourapp.amazon" - kolayca yapabilirsiniz bunları Gradle komut dosyasında ayarlayın.
niçin yüklenen her bir dosyada nereye yüklendiğini gösteren bir değişken değil? Veya kullanıcı olarak bir OptionPane var ... –
'PackageManager' ve' getInstallerPackageName() 'yükleyicinin ne olduğunu size söyleyecektir. Farklı senaryolarınızda ne getirdiğini görmek için denemeler yapmak zorunda kalacaksınız. – CommonsWare
@Fran Eğer deneme yaptıysanız, ne ile geldiniz? – ahsteele