获取android正在运行的所有app进程

时间:2022-03-10 23:02:52
        ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> infoList = am.getRunningAppProcesses();
for (ActivityManager.RunningAppProcessInfo info : infoList) {
//进程名称
String processName = info.processName;
//进程的重要程度(越低越重要)
int importance = info.importance;

if (importance > ActivityManager.RunningAppProcessInfo.IMPORTANCE_VISIBLE) {
//该进程下的所有包名
String[] pkgList = info.pkgList;
for (String pkgName : pkgList) {
//杀掉该包对应的程序
am.killBackgroundProcesses(pkgName);
}
}
}


代码就是上面的这些,获取当前正在运行的进程并获取该进程下所有的包名,那么我们在哪些情况下需要获取正在运行的所有app?

第一种

  有时候我们的app需要跳转到另外一个不是自己公司开发app,那么跳转前肯定要检测下当前手机是否安装了别人公司的app,如果安装了就跳转,没有安装就弹出下载框。检测是否安装了某app的重点就是:要获取到某app的包名

        Intent intent = mContext.getPackageManager().getLaunchIntentForPackage("com.aaa.bbb");
if (intent != null) {
//该app存在
startActivity(intent);
} else {
//TODO: 开始下载
}
  检测是否安装app的代码如上,那么如果你想检测某app的话,就需要拿到那个app的包名,这时候就要用到一开始的代码了。


第二种

  强行关闭竞争对手的进程。调用ActivityManager的killBackgroundProcess("com.aaa.bbb")来kill掉别人的app