Android 在 API 级别 21 中获取 UsageStatsManager
Android get UsageStatsManager in API level 21
我需要获取有关最近应用使用情况的信息。
在 API 21 之前,它被用来 getRunningTasks or getRecentTasks 来获取此信息。根据文档,这些方法已在 API 21 中弃用。
现在有 UsageStatsManager class,在 API 21 级介绍。
但是! Context.getSystemService(UsageStatsService) was added only in API level 22!
问题是 - 如何在 API21 中获取所需的数据??根据 dashboards,这个 API 级别的用户占 13%,我不想失去他们。
Context#getSystemService(...)
是在 API 级别 1 中引入的,但是上下文的 USAGE_STATS_SERVICE
字符串是在 API 级别 22 中引入的。所以 public static final String 字段 Context.USAGE_STATS_SERVICE
只能在 API 22 级及以上的设备上访问。为了在 API 级别 21 中获得所需的数据,您只需将已解析的字符串 "usagestats".
传递给此方法
tl;dr
使用 Context.getSystemService("usagestats")
补充说明:
#1 USAGE_STATS_SERVICE
字段已经在 API 级别 21,但被标记为 @hide
属性,无法访问。在 API 级别 22 中,它已被删除。
#2 您可能希望通过 @SuppressWarnings("WrongConstant")
关闭给定方法的归因检查,否则 Android Studio 会抱怨它不是有效常量
我需要获取有关最近应用使用情况的信息。
在 API 21 之前,它被用来 getRunningTasks or getRecentTasks 来获取此信息。根据文档,这些方法已在 API 21 中弃用。
现在有 UsageStatsManager class,在 API 21 级介绍。
但是! Context.getSystemService(UsageStatsService) was added only in API level 22!
问题是 - 如何在 API21 中获取所需的数据??根据 dashboards,这个 API 级别的用户占 13%,我不想失去他们。
Context#getSystemService(...)
是在 API 级别 1 中引入的,但是上下文的 USAGE_STATS_SERVICE
字符串是在 API 级别 22 中引入的。所以 public static final String 字段 Context.USAGE_STATS_SERVICE
只能在 API 22 级及以上的设备上访问。为了在 API 级别 21 中获得所需的数据,您只需将已解析的字符串 "usagestats".
tl;dr
使用 Context.getSystemService("usagestats")
补充说明:
#1 USAGE_STATS_SERVICE
字段已经在 API 级别 21,但被标记为 @hide
属性,无法访问。在 API 级别 22 中,它已被删除。
#2 您可能希望通过 @SuppressWarnings("WrongConstant")
关闭给定方法的归因检查,否则 Android Studio 会抱怨它不是有效常量