Android在API级别21获得UsageStatsManager

时间:2016-10-05 19:39:48

标签: android android-5.0-lollipop usage-statistics usagestatsmanager

我需要了解最近的应用使用情况。

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

现在有UsageStatsManager类,在API级别21中引入。
但是! Context.getSystemService(UsageStatsService)was added only in API level 22!

问题是 - 如何在API 21中获取所需数据?根据{{​​3}},此API级别的用户中有13%,我不想丢失它们。

1 个答案:

答案 0 :(得分:4)

在API级别1中引入了Context#getSystemService(...),但在API级别22中引入了Contexts'USAGE_STATS_SERVICE字符串。因此 public static final String 字段Context.USAGE_STATS_SERVICE只能在API级别为22及以上的设备上访问。为了在API级别21中获取所需的数据,您只需将已解析的String“usagestats”传递给此方法。

<强> TL;博士
使用Context.getSystemService("usagestats")

进一步说明:
#1 USAGE_STATS_SERVICE字段已在API级别21中,但标记为@hide属性,该属性无法访问。在API级别22中,这已被删除。

#2您可能希望通过@SuppressWarnings("WrongConstant")转换给定方法的归因检查,否则Android Studio会抱怨它不是有效常量