Android UsageStatsManager是否仅返回上一天/周/月/年的数据?

Android UsageStatsManager是否仅返回上一天/周/月/年的数据?,android,android-5.0-lollipop,Android,Android 5.0 Lollipop,我正试图从usagestastsmanager查询usagestasts。 我构建了一个DateUtils类,该类为我提供了获取每天/月/年(即将到来的一周)的开始和结束时间的方法,如下所示: public static Calendar getCal(int year, int month, int day) { Calendar cal = Calendar.getInstance(); cal.set(year, month, day, 0, 0, 0); cal.

我正试图从
usagestastsmanager
查询
usagestasts
。 我构建了一个
DateUtils
类,该类为我提供了获取每天/月/年(即将到来的一周)的开始和结束时间的方法,如下所示:

public static Calendar getCal(int year, int month, int day) {
    Calendar cal = Calendar.getInstance();
    cal.set(year, month, day, 0, 0, 0);
    cal.set(Calendar.MILLISECOND, 0);
    return cal;
}

public static long getDayStart(int year, int month, int day) {
    return getCal(year, month, day).getTimeInMillis();
}

public static long getDayEnd(int year, int month, int day) {
    Calendar cal = getCal(year, month, day);
    cal.add(Calendar.DATE, 1);
    return cal.getTimeInMillis();
}
UsageStatsManager mUsageStatsManager = (UsageStatsManager) getSystemService(Context.USAGE_STATS_SERVICE);
if(mUsageStatsManager != null){
    Calendar beginCal = Calendar.getInstance();
    beginCal.add(Calendar.DATE, -1); // get yesterdays data
    Calendar  endCal = Calendar.getInstance();

    Map<String, UsageStats> queryUsageStats = mUsageStatsManager.queryAndAggregateUsageStats(beginCal.getTimeInMillis(), endCal.getTimeInMillis());
}
我使用这些long查询不同日期的
UsageStats

 mUsageStats = mUsageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, startTime, endTime);
我可以获取今天的数据,但前几天将返回一个空列表

这是我用来获取数据的方法:

12 nov 2014, with type UsageStatsManager.INTERVAL_DAILY
startTime: 1415746800000
endTime: 1415833200000
mUsageStats size: 18

11 nov 2014, with type UsageStatsManager.INTERVAL_DAILY
startTime: 1415660400000
endTime: 1415746800000
mUsageStats size: 0

API中是否存在阻止我获取旧数据的限制,或者我是否做错了什么?

您可以使用
queryandagregateusagestats()
方法从任意日期(在设置的范围内)获取使用情况统计数据,正确的毫秒如下所示:

public static Calendar getCal(int year, int month, int day) {
    Calendar cal = Calendar.getInstance();
    cal.set(year, month, day, 0, 0, 0);
    cal.set(Calendar.MILLISECOND, 0);
    return cal;
}

public static long getDayStart(int year, int month, int day) {
    return getCal(year, month, day).getTimeInMillis();
}

public static long getDayEnd(int year, int month, int day) {
    Calendar cal = getCal(year, month, day);
    cal.add(Calendar.DATE, 1);
    return cal.getTimeInMillis();
}
UsageStatsManager mUsageStatsManager = (UsageStatsManager) getSystemService(Context.USAGE_STATS_SERVICE);
if(mUsageStatsManager != null){
    Calendar beginCal = Calendar.getInstance();
    beginCal.add(Calendar.DATE, -1); // get yesterdays data
    Calendar  endCal = Calendar.getInstance();

    Map<String, UsageStats> queryUsageStats = mUsageStatsManager.queryAndAggregateUsageStats(beginCal.getTimeInMillis(), endCal.getTimeInMillis());
}
usagestastsmanager mUsageStatsManager=(usagestastsmanager)getSystemService(Context.USAGE\u STATS\u SERVICE);
if(mUsageStatsManager!=null){
Calendar beginCal=Calendar.getInstance();
添加(Calendar.DATE,-1);//获取昨天的数据
Calendar endCal=Calendar.getInstance();
Map queryUsageStats=mUsageStatsManager.queryandagregateusagestats(beginCal.getTimeInMillis(),endCal.getTimeInMillis());
}

您找到解决方案了吗?没有,API似乎很有限。