5

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

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

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

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

4

1 回答 1

11

WellContext#getSystemService(...)是在 API 级别 1 中引入的,但 Contexts 的USAGE_STATS_SERVICEString 是在 API 级别 22 中引入的。因此,公共静态最终字符串字段Context.USAGE_STATS_SERVICE只能在 API 级别 22 及更高级别的设备上访问。为了在 API 级别 21 中获取所需的数据,您只需将已解析的字符串“usagestats”传递给此方法。

tl;博士
使用Context.getSystemService("usagestats")

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

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

于 2016-10-07T18:41:45.140 回答