2012-07-30 22 views
11

seguito sono i miei problemi: -Elenco dei installata App da Google Play Contro account Google

  1. E 'possibile ottenere l'elenco delle applicazioni che un utente ha installato, contro il loro account Google tramite Google Play, programmazione tramite l'uso di qualsiasi api ?. Si noti che non sto chiedendo l'elenco delle app attualmente installate nel dispositivo, ma quelle che sono state installate a un certo punto.

Ho bisogno di una soluzione a quanto sopra come sto pensando a uno scenario nella mia app, che è:

  • voglio dare la mia app per l'utente gratuitamente durante i primi tre mesi, dopo tre mesi se l'utente disinstalla l'app e la installa nuovamente, voglio rilevare tramite qualsiasi API (da Google Play) che l'utente ha installato l'app una seconda volta (e non dovrebbe ottenere alcun utilizzo gratuito). Please note that I don't want to use any web service to store the account id & device id of the user at my side.
+0

Questo è dove è possibile cercare: http://code.google.com/p/android-market-api/ Questo potrebbe anche essere utile: http://stackoverflow.com/ domande/10661434/does-google-play-have-an-api – Ronnie

risposta

5

Per l'opzione 2, è possibile creare un file sulla scheda SD. Questo rimarrà lì quando l'utente si disinstalla/installa. Ma l'utente può sempre cancellare il tuo file speciale. A meno che tu non faccia qualcosa al tuo fianco, non sei mai sicuro se l'utente abbia già utilizzato la tua app in precedenza.


Per essere completamente sicuri, Negozio on-line: Avrete bisogno di avere un semplice database che contiene un elenco di device_id che ha installato l'app. Inoltre una pagina web che riempie questo database. Nella tua app scarichi/apri questa pagina web che la pagina web riempie il DB.

App> WebClient (o altro) che apre http://www.example.com/registerDevice.php?device_id=. Il sito php riempie il db.

L'app dovrà controllare il database se il dispositivo corrente ha già installato questa applicazione per funzionare/non funzionare. Puoi farlo tramite lo stesso php e controllare la risposta. Ad esempio potresti restituire 'ok' o 'non ok' o qualcos'altro.

+1

Questo sarebbe un metodo molto inaffidabile per la memorizzazione delle informazioni. La scheda Sd può essere formattata, sostituita, cancellata, ecc. Ancora più probabile in 3 mesi. –

+0

Grazie per la risposta @PoweRoy. Ma puoi dirmi, per favore, che cosa ho da fare al mio fianco? –

+0

@mice: in effetti è molto inaffidabile – RvdK

3

Il metodo più semplice è ottenere l'account dell'utente la prima volta che esegue l'app e inviare tale dettaglio all'utente. Qui è ben documentato qui: How to get the Android device's primary e-mail address

Dovrai aggiungere un'altra riga di codice per ricontrollare il database al primo avvio dell'app.

EDIT: Per una soluzione non-web, è sufficiente aggiungere un timer per l'inizio della vostra app:

schedule(TimerTask task, Date when) 

il compito dovrebbe essere l'aggiunta di un gettone dopo il periodo di tempo che si desidera dare, al memoria del telefono con i dettagli dell'account dell'utente per l'autenticazione (vedere la prima soluzione per ottenere i dettagli dell'account)

Infine, come sopra, aggiungere un controllo alla memoria del telefono per quel particolare file per vedere se l'utente ha utilizzato l'app prima.

Il problema con qualsiasi tipo di autenticazione che si basa sulla memoria del telefono è che la gente può facilmente rimuovere il gettone, se riescono a trovare, e riutilizzare di nuovo l'applicazione.

+0

Grazie a @bernlim per la risposta. Ma non hai il mio punto nella domanda che scrive 'Per favore nota che non voglio usare alcun servizio web per memorizzare l'ID account e l'ID del dispositivo dell'utente al mio fianco. –

+0

modificato per te! – bernlim

0

Prova questa dispositivo specifico implementazione:

PackageManager packageManager = getContext().getPackageManager(); 
List<ApplicationInfo> applications = packageManager.getInstalledApplications(
     PackageManger.GET_UNINSTALLED_PACKAGES); 
// retrieves some information about all applications (even uninstalled ones) 
// which have data directories 

Naturalmente questo metodo non funziona se l'utente sostituisce il dispositivo. Ma non è necessario utilizzare alcun servizio web.

Problemi correlati