问题由来:
在使用ShareSDK的社会化分享功能的时候,有时候我们需要判断手机是否安装了对应的APP客户端;不过ShareSDK并没有提供相关的方法,在回调函数当中也没有相关的错误信息提示,因此需要我们自己去做判断。
代码:
/**
* 判断是否安装了微博
* @param context
* @return
*/
public static boolean isWeiboInstalled(Context context) {
final PackageManager packageManager = context.getPackageManager();
List<PackageInfo> pinfo = packageManager.getInstalledPackages(0);
if (pinfo != null) {
for (int i = 0; i < pinfo.size(); i++) {
String pn = pinfo.get(i).packageName.toLowerCase(Locale.ENGLISH);
if (pn.equals("com.sina.weibo")) {
return true;
}
}
}
return false;
}
/**
* 判断是否安装了微信
* @param context
* @return
*/
public static boolean isWeixinInstalled(Context context) {
final PackageManager packageManager = context.getPackageManager();
// 获取所有已安装程序的包信息
List<PackageInfo> pinfo = packageManager.getInstalledPackages(0);
if (pinfo != null) {
for (int i = 0; i < pinfo.size(); i++) {
String pn = pinfo.get(i).packageName.toLowerCase(Locale.ENGLISH);
if (pn.equals("com.tencent.mm")) {
return true;
}
}
}
return false;
}
/**
* 判断是否安装了QQ
* @param context
* @return
*/
public static boolean isQQClientInstalled(Context context) {
final PackageManager packageManager = context.getPackageManager();
List<PackageInfo> pinfo = packageManager.getInstalledPackages(0);
if (pinfo != null) {
for (int i = 0; i < pinfo.size(); i++) {
String pn = pinfo.get(i).packageName.toLowerCase(Locale.ENGLISH);
if (pn.equals("com.tencent.mobileqq")) {
return true;
}
}
}
return false;
}