在API级别21中获取Android的UsageStatsManager

6

我需要获取有关最近应用程序使用情况的信息。

在API 21之前,可以使用getRunningTasksgetRecentTasks来获取此信息。根据文档,这些方法已于API 21中弃用。

现在有UsageStatsManager类,引入了API级别21。
但是!Context.getSystemService(UsageStatsService) 仅在API级别22中添加!

问题是-如何在API 21中获取所需数据?根据仪表板,该API级别的用户占13%,我不想失去他们。

1个回答

13

虽然Context#getSystemService(...)在API Level 1中引入,但是Context的USAGE_STATS_SERVICE String是在API Level 22中引入的。所以公共静态常量字段Context.USAGE_STATS_SERVICE只能在API Level 22及以上设备上访问。为了在API Level 21中获取所需数据,只需将已解析的字符串“usagestats”传递给此方法即可。

简而言之
使用Context.getSystemService("usagestats")

进一步注意事项:
#1 USAGE_STATS_SERVICE字段已经在API Level 21中存在,但被标记为@hide属性,使其无法访问。在API Level 22中,这个错误被修复了。

#2 您可能希望通过@SuppressWarnings("WrongConstant")关闭对给定方法的属性检查,否则Android Studio会抱怨它不是一个有效的常量。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接