最近项目中要实现一个打开qq发起临时会话的需求,代码如下,亲测有效
/**
* 判断手机设备是否安装指定包名的apk应用程序
* @param context
* @param packageName
* @return
*/
public static boolean isSpecialApplInstalled(Context context, String packageName) {
if (isEmpty(packageName)){
return false;
}
PackageManager packageManager = context.getPackageManager();
try {
packageManager.getPackageInfo(packageName, 0);
return true;
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
return false;
}
/**
* 检查字符串是否为空
* @param str
* @return
*/
public static boolean isEmpty(CharSequence str) {
return (str == null || str.length() == 0);
}
这里是具体的逻辑代码,你们可能会发现打开qq和tim其实逻辑代码是一致的,只是判断方法不一样而已
if (Tools.isSpecialApplInstalled(this ,"com.tencent.mobileqq")){
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("mqqwpa://im/chat?chat_type=wpa&uin="+dataBean.getQQ()+"&version=1")));
}else if(Tools.isSpecialApplInstalled(this ,"com.tencent.tim")){
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("mqqwpa://im/chat?chat_type=wpa&uin="+dataBean.getQQ()+"&version=1")));
}else{
ToastUtils.showShort("您的手机没有安装QQ哦,请安装后再试");
}