@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public static boolean checkAppUsagePermission(Context context) {
UsageStatsManager usageStatsManager = (UsageStatsManager) context.getSystemService(Context.USAGE_STATS_SERVICE);
if (usageStatsManager == null) {
return false;
}
long currentTime = System.currentTimeMillis();
// try to get app usage state in last 1 min
List<UsageStats> stats = usageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, currentTime - 60 * 1000, currentTime);
if (stats.size() == 0) {
return false;
}
return true;
}
public static void requestAppUsagePermission(Context context) {
Intent intent = new Intent(android.provider.Settings.ACTION_USAGE_ACCESS_SETTINGS);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
try {
context.startActivity(intent);
} catch (ActivityNotFoundException e) {
Log.i(TAG, "Start usage access settings activity fail!");
}
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public static String getTopActivityPackageName(Context context) {
final UsageStatsManager usageStatsManager = (UsageStatsManager) context.getSystemService(Context.USAGE_STATS_SERVICE);
String topActivityPackageName = null;
long time = System.currentTimeMillis();
// 查询最后十秒钟使用应用统计数据
List<UsageStats> usageStatsList = usageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, time - 1000 * 10, time);
UsageEvents usageEvents = usageStatsManager.queryEvents(time - 1000 * 10, time);
UsageEvents.Event event = new UsageEvents.Event();
// get last event
while (usageEvents.hasNextEvent()) {
usageEvents.getNextEvent(event);
}
// 以最后使用时间为标准进行排序
if (usageStatsList != null) {
SortedMap<Long, UsageStats> sortedMap = new TreeMap<>();
for (UsageStats usageStats : usageStatsList) {
sortedMap.put(usageStats.getLastTimeUsed(), usageStats);
}
if (sortedMap.size() != 0) {
if (sortedMap.get(sortedMap.lastKey()).getPackageName().equals(event.getPackageName()) && event.getEventType() == UsageEvents.Event.MOVE_TO_FOREGROUND) {
topActivityPackageName = sortedMap.get(sortedMap.lastKey()).getPackageName();
Log.d(TAG, "Top activity package name = " + topActivityPackageName);
}
}
}
return topActivityPackageName;
}
添加 <permission android:name="android.permission.PACKAGE_USAGE_STATS"/>
需要用户给这个权限才可以