Android获得API级别21中的UsageStatsManager

Gol*_*ene 3 android usage-statistics android-5.0-lollipop usagestatsmanager

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

在API 21之前,曾使用getRunningTasksgetRecentTasks来获取此信息。根据文档,API 21中不推荐使用这些方法。

UsageStatsManager类现在,API等级21推出
,但!Context.getSystemService(UsageStatsService)仅在API级别22中添加!

问题是- 如何在API 21中获取所需的数据?根据信息中心,在此API级别上有13%的用户,我不想失去他们。

reV*_*rse 7

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

tl; dr
使用Context.getSystemService("usagestats")

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

#2您可能想通过给定方法打开属性检查,@SuppressWarnings("WrongConstant")否则Android Studio会抱怨这不是有效常量