从UsageStatsManager Android获取以前日期的App使用数据

时间:2016-01-07 07:50:48

标签: android android-5.0-lollipop android-6.0-marshmallow android-5.1.1-lollipop

如果我想获取今天应用程序使用情况的数据,首先我允许我的应用程序从设置中读取应用程序使用情况统计信息, 然后我使用此查询来获取 UsageStats

UsageStatsManager usm = (UsageStatsManager) context.getSystemService("usagestats");

(我正在以编程方式计算startTimeStamp和endTimeStamp,但这里以硬编码为例)。

long  startTimeStamp = 1452124800000;           // today's Morning 12:00:00 AM
long  endTimeStamp= 1452211199000;              // today's Night 11:59:59 PM

List<UsageStats> usageStatsList = usm.queryUsageStats(UsageStatsManager.INTERVAL_BEST, startTimeStamp, endTimeStamp);

成功我从 UsageStatsManager 获取正确的数据。

但如果我使用相同的查询来获取昨天 应用程序使用情况的数据,我只是更改了startTimeStampendTimeStamp值通过昨天&#39> TimeStamp值。

我没有从 UsageStatsManager 获取任何数据。它返回一个空列表。

我也通过将intervalType更改为UsageStatsManager.INTERVAL_DAILY来尝试相同的查询。但是,我仍然从Android UsageStatsManager获取空数据。

有没有办法获取前一天的应用程序使用数据?

1 个答案:

答案 0 :(得分:1)

通过使用queryAndAggregateUsageStats()方法(正确的毫秒数),您可以从任意日期(在讨论的here范围内)获取使用情况统计信息,如下所示:

UsageStatsManager mUsageStatsManager = (UsageStatsManager) getSystemService(Context.USAGE_STATS_SERVICE);
if(mUsageStatsManager != null){
    Calendar beginCal = Calendar.getInstance();
    beginCal.add(Calendar.DATE, -1);
    Calendar  endCal = Calendar.getInstance();

    Map<String, UsageStats> queryUsageStats = mUsageStatsManager.queryAndAggregateUsageStats(beginCal.getTimeInMillis(), endCal.getTimeInMillis());
}