首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从UsageStatsManager Android获取以前日期的应用程序使用数据

从UsageStatsManager Android获取以前日期的应用程序使用数据
EN

Stack Overflow用户
提问于 2016-01-07 07:50:48
回答 1查看 2.1K关注 0票数 2

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

代码语言:javascript
复制
UsageStatsManager usm = (UsageStatsManager) context.getSystemService("usagestats");

(我正在编程计算startTimeStamp和endTimeStamp,但这里是硬编码的示例)。

代码语言:javascript
复制
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值更改为昨天的TimeStamp值。

我不会从UsageStatsManager.那里得到任何数据它会给我一个空的列表。

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

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

EN

回答 1

Stack Overflow用户

发布于 2019-02-28 09:10:13

通过使用具有正确毫秒的这里方法,您可以从您想要的任何日期(在讨论的queryAndAggregateUsageStats()范围内)获得使用情况统计数据,如下所示:

代码语言:javascript
复制
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());
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34649881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档