Android判断手机是否安装微信(总结)

网上有很多关于判断方法,无外乎两种:

一,通过判断手机中安装的应用的包名中,是否有符合微信的包名的。

二,通过集成微信的SDK后,使用SDK里的api方法进行判断。

经测试都有问题,即单独使用其中的一种方法都不能覆盖所有机型。

如,使用微信SDK里提供的判断方法,在三星S7手机上始终返回false,不管你装没装微信。

而使用包名的方法,则在华为的某一款手机上也始终返回false, 不管你装没装微信。

所以采用二者结合的方式,先使用SDK里的方法判断一下,如果返回false,则继续使用判断包名的方法,直接扔代码如下:

    

private static IWXAPI api; // 相应的包,请集成SDK后自行引入
         
        /**
* 判断微信客户端是否存在
*
* @return true安装, false未安装
*/
public static boolean isWeChatAppInstalled(Context context) {


api = WXAPIFactory.createWXAPI(context, "Your WeChat AppId");
if(api.isWXAppInstalled() && api.isWXAppSupportAPI()) {
           return true;
        } else {
            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.equalsIgnoreCase("com.tencent.mm")) { 
                        return true;
                    }
                }
            }
            return false;
        }
}



以上代码在三星S7测试时,会先走SDK的判断,因为SDK的判断始终返回FALSE,因此会走到包名的判断,包名的判断在S7上才有用,如果手机上安装了微信,则返回true, 否则返回false。


在华为的某型号手机上(记不得了,测试时遇到过,印象很深,因为最开始的方法就是判断包名,在这款手机上就无效,后来改为使用SDK的判断方法实测有效), 判断包名的方法无效,因此用以上方法判断时,先走SDK的判断方法,安装了微信,则返回true,否则返回false。


  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值