问题描述
我正在创建一个家庭启动器,我希望与 Android 5.0 Lollipop 兼容.我想在启动器上获取最近应用的列表.
I'm creating a home launcher and I want to have a compatibility with the Android 5.0, Lollipop. I want to get a list of recent apps on the launcher.
但是由于 ActivityManager.getRecentTasks() 在 API 21 中不再有效,我该怎么做呢?
But since ActivityManager.getRecentTasks() no longer works in API 21, how can I do this ?
推荐答案
String topPackageName ; if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { UsageStatsManager mUsageStatsManager = (UsageStatsManager)getSystemService("usagestats"); long time = System.currentTimeMillis(); // We get usage stats for the last 10 seconds List<UsageStats> stats = mUsageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, time - 1000*10, time); // Sort the stats by the last time used if(stats != null) { SortedMap<Long,UsageStats> mySortedMap = new TreeMap<Long,UsageStats>(); for (UsageStats usageStats : stats) { mySortedMap.put(usageStats.getLastTimeUsed(),usageStats); } if(mySortedMap != null && !mySortedMap.isEmpty()) { topPackageName = mySortedMap.get(mySortedMap.lastKey()).getPackageName(); } } }
使用 UsageStatsManager,可以获取当前运行的前台包名.
Using the UsageStatsManager, you can get the foreground package names currently running.
来源:如何在AndroidL"上获取最近的任务?