如何获得与Android的API 21棒棒堂最近的应用程序列表?如何获得、应用程序、棒棒、最近

2023-09-07 14:26:58 作者:萌

我要创建一个家庭发射器和我想要的是Android 5.0,棒棒糖兼容性。我想在近期启动的应用程序列表。

不过,由于 ActivityManager.getRecentTasks()不再是API 21的作品,我该怎么办呢?

解决方案

 字符串topPackageName;
如果(Build.VERSION.SDK_INT> = Build.VERSION_ codeS.LOLLIPOP){
    UsageStatsManager mUsageStatsManager =(UsageStatsManager)getSystemService(usagestats);
    很长一段时间= System.currentTimeMillis的();
    //我们得到使用状态的最后10秒
    名单< UsageStats>统计= mUsageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_DAILY,时间 -  1000 * 10,时间);
    //排序统计所使用的最后一次
    如果(统计!= NULL){
        SortedMap的<长,UsageStats> mySortedMap =新TreeMap的<长,UsageStats>();
        对于(UsageStats usageStats:统计数据){
            mySortedMap.put(usageStats.getLastTimeUsed(),usageStats);
        }
        如果(mySortedMap =空&安培;!&安培;!mySortedMap.isEmpty()){
            。topPackageName = mySortedMap.get(mySortedMap.lastKey())getPackageName();
        }
    }
}
 

使用UsageStatsManager,你可以得到当前运行的前台包名。

来源:如何获得在Android&QUOT近期任务; L" ?

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.

安卓开发到底是什么

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();                                   
        }                                       
    }
}  

Using the UsageStatsManager, you can get the foreground package names currently running.

Source: How to get recent tasks on Android "L"?