文章

获取手机中已安装的应用列表(不需要权限)

获取手机中已安装的应用列表(不需要权限)

获取手机中已安装的应用列表(不需要权限)

权限读取手机中已安装的应用列表禁止

问题:禁止了应用读取手机中已安装的应用列表权限,判断某个应用是否安装了失败,如微信
下面是判断是否安装了微信,是需要读取应用列表的权限,用户禁止了,就会读取不到

1
2
3
4
5
6
7
8
9
10
11
12
13
public static boolean isWeixinAvilible(Context context) {
    final PackageManager packageManager = context.getPackageManager();// 获取packagemanager
    List<PackageInfo> pinfo = packageManager.getInstalledPackages(0);// 获取所有已安装程序的包信息
    if (pinfo != null) {
        for (int i = 0; i < pinfo.size(); i++) {
            String pn = pinfo.get(i).packageName;
            if (pn.equals("com.tencent.mm")) {
                return true;
            }
        }
    }
    return false;
}

判断是否安装了某个应用,应该用下面的方法,不需要读取手机中已安装应用列表的权限

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/**
 * 是否安装了某个应用
 * @param context Context
 * @param packageName 应用包名
 * @return true安装了
 */
private boolean hasPackage(Context context, String packageName) {
    if (null == context || TextUtils.isEmpty(packageName)) {
        return false;
    }

    boolean bHas = true;
    try {
        context.getPackageManager().getPackageInfo(packageName, PackageManager.GET_GIDS);
    } catch (PackageManager.NameNotFoundException e) {
        // 抛出找不到的异常,说明该程序已经被卸载
        bHas = false;
    }
    return bHas;
}
本文由作者按照 CC BY 4.0 进行授权