J'ai recherché sur le stackoverflow pour cette question et trouvé : Android, Détecter quand d'autres applications sont lancées et Moyen fiable de détecter le lancement d'une application depuis l'écran d'accueil / bureau? , qui répond en partie à ma question mais ce n'est pas encore suffisant.
Ce que je veux faire Je veux créer un widget/application qui montre à l'utilisateur de l'appareil une liste des applications récentes et une liste des applications les plus utilisées.
Problème Comment puis-je obtenir des données précises sur les applications afin de construire une liste des applications les plus utilisées.
Informations de base
- Je compile mon propre code Android OS (basé sur 4.2) donc j'ai accès à tout.
- Je développe également le lanceur.
- Il doit passer le CTS et être approuvé par Google.
- Je peux faire l'application avec des privilèges système.
- Je sais que cela pourrait poser un problème de sécurité pour Google.
Quelques solutions
Les applications récentes peuvent être trouvées via ActityManager, la méthode getRecentApps, donc pas de problème de ce côté-là.
J'ai cherché sur le web pour cela et j'ai déjà trouvé les solutions suivantes:
- Utiliser un service pour interroger le activityManager, la méthode getRunningTasks chaque X secondes et construire la liste (informations imprécises, utilisant également beaucoup de batterie).
- Utiliser le logcat pour obtenir ces informations (semble être une astuce à mes yeux, nécessite des autorisations système)
- Modifier le activityManager lui-même pour fournir ces informations (échouera probablement aux tests CTS)
- Utiliser le lanceur pour vérifier les applications qui ont été lancées (manque les applications lancées à l'intérieur d'autres applications)
Y a-t-il autre chose que j'aurais manqué?
Merci d'avance, Tiago Costa