1. Before API Level 21 (Lolipop , 5.0 )
ref:
http://stackoverflow.com/questions/22500959/detect-when-other-application-opened-or-launched
http://developer.android.com/reference/android/app/ActivityManager.html
Returns a list of application processes that are running on the device.
This method was deprecated in API level 21. As of
LOLLIPOP
, this method is no longer available to third party applications: the introduction of document-centric recents means it can leak person information to the caller. For backwards compatibility, it will still retu rn a small subset of its data: at least the caller's own tasks, and possibly some other tasks such as home that are known to not be sensitive.A : Get Running Processes Lists
ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> runningAppProcessInfo = am.getRunningAppProcesses();
for (int i = 0; i < runningAppProcessInfo.size(); i++) {
if(runningAppProcessInfo.get(i).processName.equals("com.the.app.you.are.looking.for") {
// Do you stuff
}
}
B: Get Top Task ( Foreground Tasks)
public static boolean isForeground(Context ctx, String myPackage){
ActivityManager manager = (ActivityManager) ctx.getSystemService(ACTIVITY_SERVICE);
List< ActivityManager.RunningTaskInfo > runningTaskInfo = manager.getRunningTasks(1);
ComponentName componentInfo = runningTaskInfo.get(0).topActivity;
if(componentInfo.getPackageName().equals(myPackage)) {
return true;
}
return false;
}
2. After API Level 21 (Lolipop)
the getRunningTasks is deprecated
other approach :
getAppTasks
http://developer.android.com/reference/android/app/ActivityManager.html#getAppTasks%28%29
http://www.intertech.com/Blog/android-5-api-changes-getapptasks/
沒有留言:
張貼留言