安卓获取进程、服务、任务列表、获取已经安装的所有应用、根据包名卸载应用

获取进程列表,需使用ActivityManager中的方法获取进程名;再根据进程名,获取应用程序的ApplicationInfo对象;用ApplicationInfo中的方法为进程加载图标和程序名称。获取服务、任务列表方法同上。

实例化ActivityManager

private ActivityManager mActivityManager;
mActivityManager=(ActivityManager)getSystemService(ACTIVITY_SERVICE);

获取任务列表

public void getTasks() {
        ArrayList<String> aryListTaskID = new ArrayList<String>();
        ArrayList<String> aryListTaskName = new ArrayList<String>();
        //以getRunningTasks()取得进程TaskInfo
        List<ActivityManager.RunningTaskInfo> mRunningTasks =
                mActivityManager.getRunningTasks(intGetTaskCounter);
        for (ActivityManager.RunningTaskInfo amTask : mRunningTasks) {
            aryListTaskName.add(amTask.baseActivity.getClassName());
            aryListTaskID.add("" + amTask.id);
            intTaskNum++;
        }
    }

获取服务列表

public void getService() {
        linkListServiceIcon = new LinkedList<Drawable>();
        aryListServiceInfo = new ArrayList<String>();
        aryListServiceName = new ArrayList<String>();
        List<ActivityManager.RunningServiceInfo> serivces =
                mActivityManager.getRunningServices(intGetServiceCounter);
        for (RunningServiceInfo service : serivces) {
            programUtil.setProcessName(service.process);
            // 根据进程名,获取应用程序的ApplicationInfo对象
            ApplicationInfo tempAppInfo = packageUtil.getApplicationInfo(service.process);

            // 为进程加载图标和程序名称
            if (tempAppInfo != null) {
                linkListServiceIcon.add(tempAppInfo.loadIcon(packageManager));
                aryListServiceName.add(tempAppInfo.loadLabel(packageManager).toString());
            } else {
                linkListServiceIcon.add(getApplicationContext().getResources().getDrawable(R.drawable.ic_launcher));
                aryListServiceName.add(service.process);
            }

            //MemInfo是否可得,不行则用包名代替
            if (!(mProcessMemoryUtil.getMemInfoByPid(service.pid) == "")) {
                aryListServiceInfo.add(mProcessMemoryUtil.getMemInfoByPid(service.pid));
            } else {
                aryListServiceInfo.add(service.process);
            }

            intServiceNum++;
        }

        Log_Ma.e("服务数量:" + intServiceNum);
        Log_Ma.e("可用内存:" + fileSize(getAvailableRAM()));
    }

获取进程列表

public void getProcess() {
        linkListProcessIcon = new LinkedList<Drawable>();
        aryListProcessInfo = new ArrayList<String>();
        aryListProcessName = new ArrayList<String>();

        List<RunningAppProcessInfo> apps =
                mActivityManager.getRunningAppProcesses();
        for (RunningAppProcessInfo app : apps) {
            //包名
//         aryListProcessName.add(app.processName);
            programUtil.setProcessName(app.processName);
            // 根据进程名,获取应用程序的ApplicationInfo对象
            ApplicationInfo tempAppInfo = packageUtil.getApplicationInfo(app.processName);
            // 为进程加载图标和程序名称
            if (tempAppInfo != null) {
                linkListProcessIcon.add(tempAppInfo.loadIcon(packageManager));
                aryListProcessName.add(tempAppInfo.loadLabel(packageManager).toString());
            } else {
                linkListProcessIcon.add(getApplicationContext().getResources().getDrawable(R.drawable.ic_launcher));
                aryListProcessName.add(app.processName);
            }
            //MemInfo是否可得,不行则用包名代替
            if (!(mProcessMemoryUtil.getMemInfoByPid(app.pid) == "")) {
                aryListProcessInfo.add(mProcessMemoryUtil.getMemInfoByPid(app.pid));
            } else {
                aryListProcessInfo.add(app.processName);
            }
            intProcessNum++;
        }
        Log_Ma.e("程序数量:" + intProcessNum);
        Log_Ma.e("可用内存:" + fileSize(getAvailableRAM()));
    }

获取已经安装的所有应用

// 获取已经安装的所有应用, PackageInfo 系统类,包含应用信息
    public static void getPackages(Context context) {
        List<PackageInfo> packages = context.getPackageManager().getInstalledPackages(0);
        for (int i = 0; i < packages.size(); i++) {
            PackageInfo packageInfo = packages.get(i);
            if ((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) { //非系统应用
                String mName = packageInfo.applicationInfo.loadLabel(context.getPackageManager()).toString();//获取应用名称
                // AppInfo 自定义类,包含应用信息
                Bean_AppInfo appInfo = new Bean_AppInfo();
                appInfo.setAppName(mName);
                appInfo.setPackageName(packageInfo.packageName); //获取应用包名,可用于卸载和启动应用
                appInfo.setVersionName(packageInfo.versionName);//获取应用版本名
                appInfo.setVersionCode(packageInfo.versionCode + "");//获取应用版本号
//                appInfo.setAppIcon(packageInfo.applicationInfo.loadIcon(context.getPackageManager()));//获取应用图标
                Log_Ma.e(TAG, appInfo.toString());
            } else { // 系统应用

            }
        }
    }

卸载应用【非静默】

//卸载应用【非静默】
    private static void deleteAPK(Context context, String pkg) {
        Uri packageUri = Uri.parse("package:" + pkg);
        Intent intent = new Intent(Intent.ACTION_DELETE, packageUri);
        context.startActivity(intent);
    }

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值