Android 6.0: метод UsageEvents "creationStatsManger.queryEvents()" дает счетчик 0 (ноль)
Я создал службу, в которой я проверяю активность на переднем плане, используя "UsageEvents".
private void getForegroundActivity() {
String packageName = "";
String className = "";
Calendar cal_begin = Calendar.getInstance();
cal_begin.set(Calendar.YEAR, -1);
long _begTime = cal_begin.getTimeInMillis();
long _endTime = System.currentTimeMillis();
UsageStatsManager usageStatsManager = (UsageStatsManager) this.getSystemService(Context.USAGE_STATS_SERVICE);
if (usageStatsManager != null) {
UsageEvents queryEvents = usageStatsManager.queryEvents(_begTime, _endTime);
if (queryEvents != null) {
UsageEvents.Event event = new UsageEvents.Event();
while (queryEvents.hasNextEvent()) {
UsageEvents.Event eventAux = new UsageEvents.Event();
queryEvents.getNextEvent(eventAux);
if (eventAux.getEventType() == UsageEvents.Event.MOVE_TO_FOREGROUND) {
event = eventAux;
}
}
packageName = event.getPackageName();
className = event.getClassName();
}
Приведенный выше код работает нормально и дает правильную активность на переднем плане, но через некоторое время (скажем, через 2-3 часа), 'queryEvents(_begTime, _endTime)
'возвращает'0'(ноль) считается!!
Есть ли другой способ использования usageStatsManager.queryEvents()
в сервисе?
Любые другие указатели, идеи приветствуются.
1 ответ
События, возвращенные queryEvents()
хранятся системой только в течение нескольких дней. Таким образом, вам, возможно, придется поддерживать локальную базу данных, чтобы поддерживать эту статистику локально. В вашем коде нет проблем.
Для получения дополнительной информации о queryEvents()
Метод и UsageStatsManager, проверьте ссылку ниже: