PackageManager获得当前手机正在运行的应用程序

前言

在网上找到了一张图,对于理解PackageInfo,ApplicationInfo和ActivityInfo有很好的帮助!
这里写图片描述

示例

 /**
     * 获得手机中正在运行的有访问网络权限的第三方应用的名字
     *
     * @param context
     * @return
     */
public static void getRunningAPP(Context context) {
    PackageManager packageManager = context.getPackageManager();
    ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
    List<ActivityManager.RunningAppProcessInfo> list = manager.getRunningAppProcesses();
    for (ActivityManager.RunningAppProcessInfo appProcess : list) {
        String[] pkgNameList = appProcess.pkgList;//获取该进程中所有的app包名
        for (String pkgName : pkgNameList) {
            Log.e("name", pkgName);
            boolean isHave = (PackageManager.PERMISSION_GRANTED == packageManager.checkPermission("android.permission.INTERNET", pkgName));
            if (isHave) {
                try {
                        ApplicationInfo info = packageManager.getApplicationInfo(pkgName, 0);
                        if ((info.flags & ApplicationInfo.FLAG_SYSTEM) <= 0) {//安装的第三方应用,而不是系统应用
                            Log.e("runningName", info.loadLabel(packageManager).toString());
                        }
                    } catch (PackageManager.NameNotFoundException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
}

public static void getPermissionList(Context context){
        //得到权限清单
        List<PackageInfo> listpackages = packageManager.getInstalledPackages(PackageManager.GET_PERMISSIONS);
        for (PackageInfo packageInfo : listpackages) {
            Log.e("package", packageInfo.packageName);
            String[] permissions = packageInfo.requestedPermissions;
            if (permissions != null) {
                for (String permission : permissions) {
                    Log.e("package", permission);
                }
            }
        }
}


public static void getAllApp(Context context){
        //得到安装的所有应用的名称
        List<ApplicationInfo> listAppcations = packageManager.getInstalledApplications(0);
        for (ApplicationInfo info : listAppcations) {
            Log.e("info", info.loadLabel(packageManager).toString());//得到应用的名称
        }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值