在Android L之前的版本,获取前台进程基本上是用下面两种方法:(现在都已失效)
方法一:getRunningTasks()
这种方法不仅可以获取前台进程包名,还可以获取前台activity名。
public String getForegroundActivity() {
ActivityManager mActivityManager =
(ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE);
if (mActivityManager.getRunningTasks(1) == null) {
Log.e(TAG, "running task is null, ams is abnormal!!!");
return null;
}
ActivityManager.RunningTaskInfo mRunningTask =
mActivityManager.getRunningTasks(1).get(0);
if (mRunningTask == null) {
Log.e(TAG, "failed to get RunningTaskInfo");
return null;
}
String pkgName = mRunningTask.topActivity.getPackageName();
//String activityName = mRunningTask.topActivity.getClassName();
return pkgName;
}
方法二:getRunningAppProcesses()
这种方法只能获取前台包名。
public String getForegroundApp(Context context) {
ActivityManager am =
(ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningAppProcesInfo> lr = am.getRunningAppProcesses();
if (lr == null) {
return null;
}
for (RunningAppProces