Comment vérifier si “android.la permission.PACKAGE_USAGE_STATS” l'autorisation est donnée?

Fond

J'essaye de l'application lancée, en statistiques, et sur Lollipop, il est possible à l'aide de la UsageStatsManager de classe, en tant que tel (post original ici):

manifeste:

<uses-permission
    android:name="android.permission.PACKAGE_USAGE_STATS"
    tools:ignore="ProtectedPermissions"/>

de l'ouverture de l'activité qui va permettre à l'utilisateur de confirmer en vous donnant cette autorisation:

startActivity(new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS));

avoir les stats, agrégées :

 private static final String USAGE_STATS_SERVICE ="usagestats"; //Context.USAGE_STATS_SERVICE);
 ...
 final UsageStatsManager usageStatsManager=(UsageStatsManager)context.getSystemService(USAGE_STATS_SERVICE);
 final Map<String,UsageStats> queryUsageStats=usageStatsManager.queryAndAggregateUsageStats(fromTime,toTime);

Le problème

Je n'arrive pas à vérifier si l'autorisation que vous avez besoin ("android.la permission.PACKAGE_USAGE_STATS") est accordée. Tout ce que j'ai essayé jusqu'à présent renvoie toujours qu'il est refusé.

Le code fonctionne, mais la vérification d'autorisation ne fonctionne pas bien.

Ce que j'ai essayé

vous pouvez vérifier une autorisation accordée à l'aide de ceci:

String permission = "android.permission.PACKAGE_USAGE_STATS";
boolean granted=getContext().checkCallingOrSelfPermission(permission) == PackageManager.PERMISSION_GRANTED;   

ou ceci:

String permission = "android.permission.PACKAGE_USAGE_STATS";
boolean granted=getPackageManager().checkPermission(permission,getPackageName())== PackageManager.PERMISSION_GRANTED;   

À la fois toujours retourné, il a refusé (même si j'ai l'autorisation en tant qu'utilisateur).

Regardant le code de UsageStatsManager, j'ai essayé de venir avec cette solution de contournement:

      UsageStatsManager usm=(UsageStatsManager)getSystemService("usagestats");
      Calendar calendar=Calendar.getInstance();
      long toTime=calendar.getTimeInMillis();
      calendar.add(Calendar.YEAR,-1);
      long fromTime=calendar.getTimeInMillis();
      final List<UsageStats> queryUsageStats=usm.queryUsageStats(UsageStatsManager.INTERVAL_YEARLY,fromTime,toTime);
      boolean granted=queryUsageStats!=null&&queryUsageStats!=Collections.EMPTY_LIST;

Il a travaillé, mais c'est toujours une solution de contournement.

La question

Comment se fait je ne suis pas d'obtenir le résultat correct de la vérification d'autorisation?

Ce qui doit être fait pour vérifier il mieux?