2010-10-08 10 views
5

Ho un'app che vorrei distribuire attraverso il marketplace e anche dal mio sito. Come faccio, utilizzando solo una build e una chiave, verificare se l'app è stata scaricata dal marketplace o no?android: Rileva se l'app è stata scaricata dal mercato

This question viene risposto facendo firmare il codice con chiavi diverse, ma idealmente vogliamo una singola generazione.

+0

Per quanto come so che questo non potrebbe essere fatto in una build. –

+0

Sergey: rimettilo come risposta e lo contrassegnerò come corretto. Da quello che posso dire, hai ragione nel senso che non è possibile. – Martyn

risposta

1

Sembra che questo non possa essere fatto.

+1

Si noti che non può essere eseguito solo in base ai vincoli dell'OP. È possibile farlo firmando la build Market con una chiave univoca e confrontando un checksum della chiave con un valore memorizzato all'interno dell'app. Personalmente, preferisco personalizzare con lo script di build per build di debug di versioni e versioni di debug. –

0

Non so se questo è realmente correlato o meno, ma se è possibile leggere /data/system/packages.xml le app di mercato sembrano avere installer = "com.google.android.feedback" mentre quelle in bundle con la compilazione del sistema e quelli compilati localmente no.

+1

Recentemente Android Market ha il pacchetto "com.android.vending". –

1

Sul mio Android 1.5 portatile solo le applicazioni installate tramite mercato sono elencati in "I miei download" nel mercato di App, quindi la domanda è se è possibile recuperare l'elenco in fase di esecuzione. Non so se è lo stesso con Android 2.x.

3

packageManager.getInstallerPackageName (contesto) .equals ("com.google.android.feedback")

http://developer.android.com/reference/android/content/pm/PackageManager.html#getInstallerPackageName(java.lang.String)

+2

Questa potrebbe non essere una soluzione praticabile, come [alcuni sviluppatori stanno segnalando] (http://groups.google.com/group/android-developers/browse_thread/thread/d3c0ac0748e38132) che 'getInstallerPackageName()' non restituisce sempre il stesso valore (o qualsiasi valore) quando l'applicazione viene installata tramite Market. –

Problemi correlati