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

        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


版权声明:本文为njweiyukun原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。