2013-04-16 18 views
11

Ho cercato lo StackOverflow per questa domanda e ha trovato: Android, Detect when other apps are launched e Reliable way to detect application launch from home/desktop?, che tipo di risposte alla mia domanda, ma non è ancora abbastanza.Rilevamento attività Android lancia

Quello che voglio fare Voglio creare un widget/app che mostra l'utente del dispositivo un elenco delle app recenti e un elenco di applicazioni più utilizzate.

Problema Come posso avere dati precisi sulle app per creare un elenco di app più utilizzate.

informazioni Base

  • sto la compilazione il mio sistema operativo Android (4.2 based) codice in modo che hanno accesso a tutto.
  • Sto sviluppando anche il programma di avvio.
  • È necessario superare il CTS ed essere approvato da Google.
  • Posso rendere l'app con i privilegi di sistema.
  • So che questo potrebbe essere un problema di sicurezza per Google.

Alcune soluzioni

Le recenti applicazioni possono essere trovati tramite ActityManager, metodo getRecentApps, così ora c'è problema.

Ho cercato il web per questo e già trovato le seguenti soluzioni:

  1. Utilizzare un servizio per interrogare l'ActivityManager, metodo di getRunningTasks ogni X secondi e costruire la lista (informazioni innacurate, anche con un sacco di batery).
  2. Utilizzare il logcat per ottenere queste informazioni (sembra un trucco per me, ha bisogno di autorizzazioni di sistema)
  3. Modificare l'ActivityManager stesso, al fine di fornire queste informazioni (molto probabilmente fallire i test CTS)
  4. Utilizzare il programma di avvio per verificare le app che sono state lanciate (mancano le app lanciate all'interno di altre app)

Qualcos'altro che ho perso?

Grazie in anticipo, Tiago Costa

+0

È abbastanza molto inchiodato elencando tutte e 4 le opzioni. Il mio preferito sta usando '(ActivityManager) this.getSystemService (ACTIVITY_SERVICE);' – srf

+0

Grazie per la risposta, ho intenzione di provarli tutti e vedere quale funziona meglio. Grazie ancora. –

+0

logcat non funziona con Android 4.2 e versioni successive, a meno che non si disponga delle autorizzazioni di root, vedere https://groups.google.com/forum/?fromgroups=#!topic/android-developers/6U4A5irWang – mattlaabs

risposta

1
implementazione dialogo applicazioni recente

di default di Android è meglio di riferimento per voi, look here..check reloadButtons()

final ActivityManager am = (ActivityManager) 
       context.getSystemService(Context.ACTIVITY_SERVICE); 
     final List<ActivityManager.RecentTaskInfo> recentTasks = 
       am.getRecentTasks(MAX_RECENT_TASKS, ActivityManager.RECENT_IGNORE_UNAVAILABLE); 

Si può provare in modo simile ..

+0

Per il commento, ho provato tutti e 4 i passaggi e sono andato a prendere le chiamate Startapplication nel programma di avvio. Ha informazioni quasi perfette e non ci sono processi extra. –

+0

Puoi specificare "quasi perfetto"? Cosa ti manca? –

+0

Applicazioni avviate in altre attività che non sono il mio programma di avvio. Poiché la maggior parte delle persone avvia le attività tramite il programma di avvio, serve al mio scopo. –