assertThat(event.getPackageName()).isEqualTo(TEST_PACKAGE_NAME1); assertThat(event.getTimeStamp()).isEqualTo(1000L); assertThat(event.getEventType()).isEqualTo(Event.MOVE_TO_BACKGROUND); assertThat(event.getPackageName()).isEqualTo(TEST_PACKAGE_NAME2); assertThat(event.getTimeStamp()).isEqualTo(1500L); assertThat(event.getEventType()).isEqualTo(Event.MOVE_TO_FOREGROUND);
assertThat(event.getPackageName()).isEqualTo(TEST_PACKAGE_NAME1); assertThat(event.getTimeStamp()).isEqualTo(11000L); assertThat(event.getEventType()).isEqualTo(Event.MOVE_TO_BACKGROUND); assertThat(event.getPackageName()).isEqualTo(TEST_PACKAGE_NAME2); assertThat(event.getTimeStamp()).isEqualTo(11500L); assertThat(event.getEventType()).isEqualTo(Event.MOVE_TO_FOREGROUND);
/** * 获取前台应用包名(API >= 22) * <p>需要添加 {@code <uses-permission android:name="android.permission.PACKAGE_USAGE_STATS"/>} 权限</p> * * @param context * @return */ @TargetApi(Build.VERSION_CODES.LOLLIPOP_MR1) private static String getForegroundPackage4(Context context) { UsageStatsManager usageStatsManager = (UsageStatsManager) context.getSystemService(Context.USAGE_STATS_SERVICE); long endTime = System.currentTimeMillis(); long beginTime = endTime - 10 * 1000; UsageEvents.Event event = new UsageEvents.Event(); UsageEvents usageEvents = usageStatsManager.queryEvents(beginTime, endTime); while (usageEvents.hasNextEvent()) { usageEvents.getNextEvent(event); if (event.getEventType() == UsageEvents.Event.MOVE_TO_FOREGROUND) { result = event.getPackageName(); } } return result; } }
usageEvents.getNextEvent(event); if (event.getEventType() == UsageEvents.Event.MOVE_TO_FOREGROUND) { packageNameByUsageStats = event.getPackageName(); Date d = new Date(event.getTimeStamp()); classByUsageStats = event.getClassName() + " " + d.toString();
@TargetApi(Build.VERSION_CODES.LOLLIPOP) public String getForegroundApp(final Context context) { if(!Utils.hasUsageStatsPermission(context)) return null; String foregroundApp = null; UsageStatsManager mUsageStatsManager = (UsageStatsManager) context.getSystemService(Service.USAGE_STATS_SERVICE); long time = System.currentTimeMillis(); UsageEvents usageEvents = mUsageStatsManager.queryEvents(time - 1000 * 3600, time); UsageEvents.Event event = new UsageEvents.Event(); while (usageEvents.hasNextEvent()) { usageEvents.getNextEvent(event); if(event.getEventType() == UsageEvents.Event.MOVE_TO_FOREGROUND) { foregroundApp = event.getPackageName(); } } return foregroundApp ; } }