无法访问 Context.USAGE_STATS_SERVICE

Not*_*bad 3 service android android-5.0-lollipop

我试图Usage_Stats_Service通过这个访问棒棒糖:

final UsageStatsManager usageStatsManager=(UsageStatsManager)this.getSystemService(Context.USAGE_STATS_SERVICE);
Run Code Online (Sandbox Code Playgroud)

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

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

我已经花了将近 2 个小时的时间,却没有弄清楚发生了什么。欢迎任何帮助。

A--*_*--C 6

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

它不是公开可用的常量,因为USAGE_STAT_SERVICE使用源代码中@hide注释隐藏。这是由缺乏支持的在文档USAGE_STAT_SERVICE

getSystemService有一个只接受@ServiceName 常量的约束。

这是由于“属性检查”,不应影响编译。它可以被关闭

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

UsageStatsManager manager = (UsageStatsManager) getSystemService("usagestats");
Run Code Online (Sandbox Code Playgroud)

此外,值得注意的是所需许可

android.permission.PACKAGE_USAGE_STATS
Run Code Online (Sandbox Code Playgroud)

Studio 只是将其标记为无法授予的权限(根据文档在技术上是正确的),因此 Studio 目前不知道诸如此类的“特殊”权限。

可以授予使用访问权限

Settings > Security > Apps with usage access
Run Code Online (Sandbox Code Playgroud)