2013-07-13 11 views

risposta

15

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 
} 
+4

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

3

A meno che non si creino build separati. Ma con un buon setup/ant script maven è possibile automatizzare facilmente questo processo.

9

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?

Problemi correlati