【问题标题】:Get App usage data of previous dates from UsageStatsManager Android从UsageStatsManager Android 获取以前日期的应用使用数据
【发布时间】:2016-01-07 07:50:48
【问题描述】:

如果我想获取今天应用使用情况的数据,首先我允许我的应用从设置中读取应用使用统计信息, 然后我使用这个查询来获取 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 的值更改为昨天的 时间戳值。

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

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

有什么方法可以获取前一天的 App 使用数据??

【问题讨论】:

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


【解决方案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());
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-25
    • 2018-09-19
    • 1970-01-01
    • 2014-07-27
    • 2020-09-19
    • 2018-10-25
    • 2019-10-08
    • 1970-01-01
    相关资源
    最近更新 更多