如果我想获取今天应用程序使用情况的数据,首先我允许我的应用程序从设置中读取应用程序使用情况统计信息, 然后我使用此查询来获取 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 获取正确的数据。
但如果我使用相同的查询来获取昨天 应用程序使用情况的数据,我只是更改了startTimeStamp
和endTimeStamp
值通过昨天&#39> TimeStamp值。
我没有从 UsageStatsManager 获取任何数据。它返回一个空列表。
我也通过将intervalType
更改为UsageStatsManager.INTERVAL_DAILY
来尝试相同的查询。但是,我仍然从Android UsageStatsManager获取空数据。
有没有办法获取前一天的应用程序使用数据?
答案 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());
}