Получить данные об использовании приложения за предыдущие даты из UsageStatsManager Android

Если я хочу получить данные о сегодняшнем использовании приложения, сначала я разрешил моему приложению в настройках читать статистику использования приложения, а затем я использую этот запрос для получения 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 на вчерашние значения TimeStamp.

Я не получаю никаких данных от UsageStatsManager. Он возвращает мне пустой список.

Я также попробовал тот же запрос, изменив intervalType на UsageStatsManager.INTERVAL_DAILY. но тем не менее я получаю пустые данные от Android UsageStatsManager.

Есть ли способ получить данные об использовании приложения за предыдущий день (дни) ??


person Himanshu Mori    schedule 07.01.2016    source источник
comment
я думаю, что это (stackoverflow.com/questions/26882956/ ) поток также имеет ту же проблему.   -  person Himanshu Mori    schedule 07.01.2016


Ответы (1)


Вы можете получить статистику использования за любую желаемую дату (в пределах, обсуждаемых здесь), используя метод queryAndAggregateUsageStats() с правильными миллисекундами, например:

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());
}
person Siim Puniste    schedule 28.02.2019