我需要获取有关最近应用程序使用情况的信息。
在API 21之前,可以使用getRunningTasks或getRecentTasks来获取此信息。根据文档,这些方法已于API 21中弃用。
现在有UsageStatsManager类,引入了API级别21。
但是!Context.getSystemService(UsageStatsService) 仅在API级别22中添加!
问题是-如何在API 21中获取所需数据?根据仪表板,该API级别的用户占13%,我不想失去他们。
我需要获取有关最近应用程序使用情况的信息。
在API 21之前,可以使用getRunningTasks或getRecentTasks来获取此信息。根据文档,这些方法已于API 21中弃用。
现在有UsageStatsManager类,引入了API级别21。
但是!Context.getSystemService(UsageStatsService) 仅在API级别22中添加!
问题是-如何在API 21中获取所需数据?根据仪表板,该API级别的用户占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会抱怨它不是一个有效的常量。