Ho app in Google Play, Amazon, Samsung Apps e ho intenzione di caricare su altri negozi. Non desidero compilare la compilazione separata per ogni negozio. C'è modo di rilevare quale app installata nel negozio se la stessa app è stata inviata a negozi diversi?In che modo l'app Android può rilevare quale store lo ha installato?
risposta
Dovrete espandere questa per ogni punto vendita aggiuntivo, ma questo dovrebbe iniziare
if (PackageManager.getInstallerPackageName().equals("com.android.vending")
{
//do google things
}
else if (PackageManager.getInstallerPackageName().equals("com.amazon.venezia")
{
//do amazon things
}
A meno che non si creino build separati. Ma con un buon setup/ant script maven è possibile automatizzare facilmente questo processo.
rilevo Installer come questo all'interno del MainActivity:
//is installed via amazon, google?
String installerId = null;
try {
installerId = this.getPackageManager().getInstallerPackageName(this.getPackageName());
} catch (Exception e) {
//just in case...
}
if ("com.amazon.venezia".equals(installerId)) {
// amazon
} else if ("com.android.vending".equals(installerId)) {
// google
} else {
// others & unknown ones
}
Ho testato questo in la mia ultima app e ha trasmesso l'app in googe play, negozio amazon e negozio slideme.org
Aggiornamento: aspetto s come a volte c'è il nome del pacchetto di installazione com.google.android.feedback che sembra essere correlato a Google Store, anche se ho visto nel mio test di Google Analytics che com.android.vending è di gran lunga più frequente. Quindi se vuoi renderlo ancora più preciso dovresti gestire anche questo pacchetto di installazione. Si noti inoltre che alcuni mercati (come slideme.org) semplicemente non sembrano impostare un id di installazione del pacchetto.
Consulta anche: Can PackageManager.getInstallerPackageName() tell me that my app was installed from Amazon app store?
non ho trovato questo per essere affidabile in passato. Ho sperimentato l'invio di getInstallerPackageName durante l'installazione sul mio server web con un'app popolare caricata su 6 mercati e il 41% non era nemmeno impostata – jamesc