我正在尝试使用UsageStatsManager在带有Marshmallow的Nexus 5上获取前台应用程序.我记得它曾经工作,但由于某种原因我现在得到包/类名称的空字符串.
这是我的实施
public String[] getForegroundPackageNameClassNameByUsageStats() {
String packageNameByUsageStats = null;
String classByUsageStats = null;
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
UsageStatsManager mUsageStatsManager = (UsageStatsManager)getSystemService("usagestats");
final long INTERVAL = 1000;
final long end = System.currentTimeMillis();
final long begin = end - INTERVAL;
final UsageEvents usageEvents = mUsageStatsManager.queryEvents(begin, end);
while (usageEvents.hasNextEvent()) {
UsageEvents.Event event = new UsageEvents.Event();
usageEvents.getNextEvent(event);
if (event.getEventType() == UsageEvents.Event.MOVE_TO_FOREGROUND) {
packageNameByUsageStats = event.getPackageName();
classByUsageStats = event.getClassName();
Log.d(TAG, "packageNameByUsageStats is" + packageNameByUsageStats + ", classByUsageStats is " + classByUsageStats);
}
}
}
return new String[]{packageNameByUsageStats,classByUsageStats};
}
由于某种原因,它不会进入while循环,即usageEvents.hasNextEvent()为false.因此,它返回null包/类名.
知道我做错了什么吗?
谢谢.
解决方法:
好的,所以我发现一旦我将间隔设置为10000而不是1000,它就可以了.显然1s的间隔太小了.
标签:android,usagestatsmanager
来源: https://codeday.me/bug/20190527/1166030.html