无法访问Context.USAGE_STATS_SERVICE

时间:2015-01-14 17:36:32

标签: android service android-5.0-lollipop

我试图通过以下方式访问棒棒糖中的Usage_Stats_Service



final UsageStatsManager usageStatsManager=(UsageStatsManager)this.getSystemService(Context.USAGE_STATS_SERVICE);




我可以转到Context类,看看这个常量是如何存在的,但Android Studio一直说它不是一个有效的常量。

我也试过使用文字字符串,但似乎getSystemService有一个约束,只接受@ServiceName常量。

我花了差不多2个小时没有发现什么是hapenning。欢迎任何帮助。

1 个答案:

答案 0 :(得分:4)

  

Android Studio一直说这不是一个有效的常量。

这不是公开的常量,因为USAGE_STAT_SERVICE使用source code中的@hide注释隐藏了。 documentation中缺少USAGE_STAT_SERVICE支持此功能。

  

getSystemService有一个限制,只接受@ServiceName   常数。

这是由于“属性检查”,不应该影响编译。它可以是turned off

我还使用直接字符串成功获得了UsageManagerService的实例。

UsageStatsManager manager = (UsageStatsManager) getSystemService("usagestats");

此外,值得注意的是permission required

android.permission.PACKAGE_USAGE_STATS

只是被Studio标记为无法授予的权限(技术上基于文档是真的)所以Studio此时并不知道“特殊”权限,例如这些权限。

用法访问权限可以在

中授予
Settings > Security > Apps with usage access