I have gone through this question and this question. But with the help of this library i can now get the list of foreground tasks using following code.
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { //For versions less than lollipop
ActivityManager am = ((ActivityManager) getSystemService(ACTIVITY_SERVICE));
List taskInfo = am.getRunningTasks(5);
top = taskInfo.get(0).topActivity.getPackageName();
Log.v(TAG, "top app = " + top);
}else{ //For versions Lollipop and above
List processes = ProcessManager.getRunningForegroundApps(getApplicationContext());
Collections.sort(processes, new ProcessManager.ProcessComparator());
for (AndroidAppProcess process : processes) {
if (process.foreground) {
top =process.name;
Log.v(TAG,top);
}
}
}
Here, for Android 5.0+, i get all running foreground process but i'm unable to conclude which app is the top app.
Output for above code (for else condition)
com.android.vending
com.google.android.gms
com.google.android.googlequicksearchbox
com.google.android.videos
com.test1
com.naag.testing
com.example.android.gettask
Here my top app is com.google.android.videos
Now how to decide com.google.android.videos is the top app from the above list programmatically?
How does applocker (or similar to applocker) app works on 5.0+?
Hope someone helps which will be helpful for someone.
本文探讨了如何通过编程获取Android 5.0及以上设备上运行的前台任务列表,并识别哪个应用是真正的Top应用。同时揭示了AppLocker的工作原理,为开发者提供了解决类似问题的思路。
2万+

被折叠的 条评论
为什么被折叠?



