Mientras que en la mayoría de los casos se puede obtener el nombre de la tienda mediante la inclusión de una comprobación similar a esto:
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" es Google Play Store y
'com.amazon.venezia' es la Amazon Appstore, y
nula cuando fue transferido en forma paralela
los resultados podrían no ser fiables sin embargo, como por ejemplo durante las pruebas beta de una tienda podría no establecer este valor, y además es posible sideload su aplicación para especificar el nombre del paquete del instalador que podría interpretarse como un nombre de la tienda:
adb install -i <INSTALLER_PACKAGE_NAME> <PATH_TO_YOUR_APK>
es posible que desee considerar la posibilidad de diferentes nombres de paquetes para diferentes tiendas, por ejemplo, "com.example.yourapp" para Google y "com.example.yourapp.amazon" para Amazon - puede eas ponlos en tu script de Gradle.
¿por qué no solo tener una variable dentro de cada uno de los lanzamientos mostrando dónde se cargó? O tenga un OptionPane como usuario ... –
'PackageManager' y' getInstallerPackageName() 'le dirá qué era el instalador. Tendría que ejecutar experimentos para ver qué devuelve en sus diferentes escenarios. – CommonsWare
@Fran si experimentaste, ¿con qué se te ocurrió? – ahsteele