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 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.