我试图通过以下方式访问棒棒糖中的Usage_Stats_Service
:
final UsageStatsManager usageStatsManager=(UsageStatsManager)this.getSystemService(Context.USAGE_STATS_SERVICE);

我可以转到Context
类,看看这个常量是如何存在的,但Android Studio一直说它不是一个有效的常量。
我也试过使用文字字符串,但似乎getSystemService
有一个约束,只接受@ServiceName
常量。
我花了差不多2个小时没有发现什么是hapenning。欢迎任何帮助。
答案 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