Android 正在运行APP

class RuningApp {


    fun queryRunningInfo(
        activity: Activity
    ): MutableList<ApplicationInfo> {
        var pm = activity.packageManager
        // 查询所有已经安装的应用程序
        val packAllList =
            pm.getInstalledApplications(PackageManager.GET_UNINSTALLED_PACKAGES)
        Collections.sort(
            packAllList,
            ApplicationInfo.DisplayNameComparator(pm)
        )

        return packAllList
    }

    fun saveAllRunning(activity: Activity): MutableMap<String, ActivityManager.RunningAppProcessInfo> {
        // 保存所有正在运行的包名 以及它所在的进程信息
        val pross: MutableMap<String, ActivityManager.RunningAppProcessInfo> =
            HashMap()
        val mActivityManager =
            activity.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager
        // 通过调用ActivityManager的getRunningAppProcesses()方法获得系统里所有正在运行的进程
        if (mActivityManager != null) {
            val appProcessList = mActivityManager
                .runningAppProcesses
            if (appProcessList != null) {
                for (appProcess in appProcessList) {
                    val pid = appProcess.pid // pid
                    val processName = appProcess.processName // 进程名
                    //            Log.i(TAG, "processName: " + processName + "  pid: " + pid);
                    val pkgNameList =
                        appProcess.pkgList // 获得运行在该进程里的所有应用程序包

                    // 输出所有应用程序的包名
                    if (pkgNameList != null) {
                        for (i in pkgNameList.indices) {
                            val pkgName = pkgNameList[i]
                            // 加入至map对象里
                            pross[pkgName] = appProcess
                        }
                    }
                }
            }
        }
        return pross
    }

    fun saveRunningNAme(
        activity: Activity,
        pkm: PackageManager
    ): ArrayList<RunNingBean> {
        // 保存所有正在运行的应用程序信息
        var runningApp: ArrayList<RunNingBean> =
            ArrayList<RunNingBean>()
        if (queryRunningInfo(activity) != null) {
            for (app in queryRunningInfo(activity)) {
                // 如果该包名存在 则构造一个RunningAppInfo对象
                if (saveAllRunning(activity).containsKey(app.packageName)) {
                    // 获得该packageName的 pid 和 processName
                    runningApp.add(RunNingBean(app.loadLabel(pkm) as String))
                }
            }
        }
        return runningApp
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值