UsageShatsManager를 사용하여 Nexus 5에서 마셜을 사용하여 포 그라운드 앱을 가져 오려고합니다. 나는 그것이 작동하는 데 사용 기억하지만, 어떤 이유로 패키지/클래스 이름에 대한 null 문자열을 지금지고 있어요.UsageStatsManager를 사용하여 포 그라운드 앱 가져 오기
는 몇 가지 이유로 내 구현
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 패키지/클래스 이름을 반환합니다.
내가 뭘 잘못하고 있는지 아는 사람이 있습니까?
감사합니다.
대부분의 사람들은 테스트 할 때 자주 작동하는 응용 프로그램을 빠르게 확인하도록 전환하기 때문에 작동한다고 생각합니다. 전경 앱의 마지막 변경이 오래되었을 때 문제가 발생합니다. – FrankKrumnow