引言
判断手机是否安装微信的两种方法:
1.通过判断手机上安装的应用的包名集合中是否包含微信的包名判断
2.通过集成微信sdk后,使用sdk提供的api进行判断
经测试,单独使用这两种方法中的其中一种都会出现不能适配所有机型的情况。
例如:单独使用方法一通过包名来判断在小米8青春版手机上不管你装没装微信,始终返回false;而使用方法二通过微信sdk提供的api来判断在三星s7手机上也是同样的问题,不管手机上有没有安装微信,始终返回false。
正文
分析
所以我们这里采用两者结合的方式进行判断手机是否安装了微信。
具体代码如下:
/**
* 判断手机是否安装微信
*
* @param context 上下文
* @return
*/
public static boolean isWxAppInstalledAndSupported(Context context) {
IWXAPI wxApi = WXAPIFactory.createWXAPI(context, WxPay.APP_ID);
boolean bIsWXAppInstalledAndSupported = wxApi .isWXAppInstalled() && wxApi.isWXAppSupportAPI();
if (!bIsWXAppInstalledAndSupported) {
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;
}
return true;
}
用以上代码测试这两种机型手机都完美解决问题。