Android Lollipop sait si l'application est un accès aux statistiques d'utilisation

Depuis Android Lollipop, nous avons maintenant une API pour accéder aux statistiques d'utilisation des applications. Toutefois, votre application doit recevoir ces autorisations par l'utilisateur.

Je sais que pour redirection de l'utilisateur à ces paramètres en utilisant Settings.ACTION_USAGE_ACCESS_SETTINGS.

  • Java.lang.NoSuchMethodError: Aucune méthode statique setOnApplyWindowInsetsListener
  • SyncAdapter n'est pas appelé selon l'ordre des appels de configuration du compte
  • WakeLock a finalisé tout en conservant une erreur même si je la relève
  • Barre de titre personnalisée sans rembourrage (Android)
  • Créer Bluetooth sur Android 2.1 détectable indéfiniment
  • Quelle est la fonctionnalité de l'utilisation de PhoneGap?
  • Maintenant, ma question est de savoir comment savez-vous que l'utilisateur vous a accordé ces autorisations afin que vous puissiez arrêter de la rediriger vers les paramètres.

    Merci!

  • Comment définir ma propre icône pour les marqueurs dans le clusterer dans Google Maps
  • Comment puis-je obtenir des préférences pour fonctionner dans Android?
  • GcmListenerService n'est pas appelé lorsque l'application est en arrière-plan
  • Comment faire de mon administrateur de périphérique d'application sur Android?
  • Android - les marges spécifiées dans le style personnalisé ne prennent pas effet
  • Android Camera2 getPreviewFrame
  • 4 Solutions collect form web for “Android Lollipop sait si l'application est un accès aux statistiques d'utilisation”

    Vous pouvez simplement faire une requête avec les intervalles quotidiens et l'heure de fin de l'heure actuelle et si rien n'est renvoyé, cela signifie que l'utilisateur n'a pas accordé d'autorisations

    @TargetApi(Build.VERSION_CODES.LOLLIPOP) public boolean doIHavePermission(){ final UsageStatsManager usageStatsManager = (UsageStatsManager) context.getSystemService(Context.USAGE_STATS_SERVICE); final List<UsageStats> queryUsageStats = usageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, 0, System.currentTimeMillis()); return !queryUsageStats.isEmpty(); } 

    L'intervalle quotidien avec la date de début 0 et la date de fin de l'heure actuelle doit au moins renvoyer l'utilisation actuelle. Ainsi, il ne sera vide que si les autorisations ne sont pas accordées.

    Vérifiez cette réponse: la réponse de Tomik

    Si vous vous dépêchez, voici la solution;)

      @TargetApi(Build.VERSION_CODES.LOLLIPOP) public static boolean usageAccessGranted(Context context) { AppOpsManager appOps = (AppOpsManager)context.getSystemService(Context.APP_OPS_SERVICE); int mode = appOps.checkOpNoThrow(AppOpsManager.OPSTR_GET_USAGE_STATS, android.os.Process.myUid(), context.getPackageName()); return mode == AppOpsManager.MODE_ALLOWED; } 

    Je suis tombé sur le même problème. Sur les statistiques d'utilisation de Samsung S5 Lollipop n'a pas fonctionné avec le code suivant:

     Intent intent = new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); 

    Cependant, les statistiques d'utilisation existent réellement. Avec le code suivant, on peut ouvrir les paramètres de sécurité:

     Intent intent = new Intent(Settings.ACTION_SECURITY_SETTINGS); intent.setComponent(new ComponentName("com.android.settings","com.android.settings.Settings$SecuritySettingsActivity")); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); 

    Un défilement vers le bas et il existe des statistiques d'utilisation. J'ai également inspecté les journaux et, en appuyant sur les statistiques d'utilisation, vous êtes dirigé vers SubActivity qui contient le fragment UsageStats. J'ai essayé le code suivant:

     Intent intent = new Intent(); intent.setComponent(new ComponentName("com.android.settings", "com.android.settings.SubSettings")); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); 

    Mais j'ai une exception de sécurité. Le problème, c'est qu'ils n'ont pas marqué SubActivity comme exportés , pour autant que je sache qu'il n'est pas possible de démarrer directement SubActivity (fenêtre de statistiques d'utilisation). La seule solution est de prendre l'utilisateur dans les paramètres Securiy et lui dire de passer manuellement à la vue des statistiques d'utilisation et à activer l'application.

    Si quelqu'un trouve une meilleure solution, ce serait génial!

    Voir ActivityNotFoundException dans Lollipop lorsque vous essayez de lancer une activité avec l'intention android.settings.USAGE_ACCESS_SETTINGS pour une meilleure façon, car avec la méthode, nous ne pouvons pas discerner s'il existe des statistiques simples pour l'intervalle de temps

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.