Android 判断新浪微博APP是否安装

       今天在开发微博分享时遇到一个问题,手机未安装新浪微博APP时,调用微博网页版,但是微博网页版加载太慢,于是应产品需求添加了微博是否安装的判断。

        这里介绍两种方法:

一、是根据 PackageManager.getInstalledPackages方法,获取应用列表,通过微博包名判断。

代码如下:

public static boolean isWeiboInstalled(@NonNull Context context) {
    PackageManager pm;
    if ((pm = context.getApplicationContext().getPackageManager()) == null) {
        return false;
    }
    List<PackageInfo> packages = pm.getInstalledPackages(0);
    for (PackageInfo info : packages) {
        String name = info.packageName.toLowerCase(Locale.ENGLISH);
        if ("com.sina.weibo".equals(name)) {
            return true;
        }
    }
    return false;
}

        经测试只支持大部分机型支持,遇到一个小米的安卓11的测试机上,需要打开获取应用列表权限。不符合应用场景。

二、根据 PackageManager.getPackagesForUid来获取列表,该方法无需获取任何权限,经测试暂未遇到问题。

 代码如下:

public static boolean isWeiBoInstalled(@NotNull Context context) {
    PackageManager pm = context.getPackageManager();
    //系统应用uid从1000开始,用户应用uid从10000(FIRST_APPLICATION_UID)开始,直接合并查询
    for (int i = 10000; i <= 11000; i++) {
        try {
            String[] apps = pm.getPackagesForUid(i);
            if (apps != null) {
                for (String app : apps) {
                    PackageInfo info = pm.getPackageInfo(app, 0);
                    if (info != null && info.packageName.equals("com.sina.weibo")) {
                        return true;
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    return false;
}

在此记录下结论!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值