Android 6.0:UsageEvents 方法 'usageStatsManger.queryEvents()' 给出计数 0(零)
Android 6.0 : UsageEvents method 'usageStatsManger.queryEvents()' is giving count 0 (zero)
我创建了一个 Service,我在其中使用“UsageEvents”检查前景 activity。
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();
}
上面的代码工作正常并给出了正确的前景 activity,但是一段时间后(比如说 2-3 小时后),'queryEvents(_begTime, _endTime)
'returns '0' (零)计数 !!
在 Service 中是否有其他使用 usageStatsManager.queryEvents()
的方法?
如有任何其他指点和想法,我们将不胜感激。
queryEvents()
返回的事件在系统中只保留几天。因此,您可能必须维护本地数据库以在本地维护这些统计信息。你的代码没有问题。
有关 queryEvents()
方法和 UsageStatsManager 的更多信息,请查看以下 link :
我创建了一个 Service,我在其中使用“UsageEvents”检查前景 activity。
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();
}
上面的代码工作正常并给出了正确的前景 activity,但是一段时间后(比如说 2-3 小时后),'queryEvents(_begTime, _endTime)
'returns '0' (零)计数 !!
在 Service 中是否有其他使用 usageStatsManager.queryEvents()
的方法?
如有任何其他指点和想法,我们将不胜感激。
queryEvents()
返回的事件在系统中只保留几天。因此,您可能必须维护本地数据库以在本地维护这些统计信息。你的代码没有问题。
有关 queryEvents()
方法和 UsageStatsManager 的更多信息,请查看以下 link :