前几天项目有用到打开外部app,找了有点时间 ,也测了些时间,所以现在做个总结,权当记录。废话不多说,直接上干货
打开淘宝指定店铺
if(isHasTaoBao(context)){ try { Intent intent = new Intent(); intent.setAction("android.intent.action.VIEW"); String[] strings = url.split("://"); intent.setData(Uri.parse("taobao://" + strings[strings.length - 1])); mContext.startActivity(intent); }catch (Exception e) { // ToastUtil.show(e.toString()); } } else { StartActivityUtil.openWeb(mContext,url); //ToastUtil.show("淘宝未安装"); }
打开微博指定用户界面
if(isHasWeiBo(context)){ Intent intent = new Intent(Intent.ACTION_VIEW); Uri uri = Uri.parse("sinaweibo://userinfo?uid=" + uid); intent.setData(uri); context.startActivity(intent); } else{ StartActivityUtil.openWeb(context,"http://weibo.cn/qr/userinfo?uid=" + uid); }
打开微信app
if(isHasWeiXin(context)){ try { Intent intent = context.getPackageManager().getLaunchIntentForPackage("com.tencent.mm"); mContext.startActivity(intent); }catch (Exception e) { // ToastUtil.show(e.toString()); } } else { ToastUtil.show("你暂未安装微信哦"); }
然后最后就判断是否安装某个app
public static List<String> getPackageNames(Context context) { final PackageManager packageManager = context.getPackageManager();// 获取packagemanager List<PackageInfo> pinfo = packageManager.getInstalledPackages(0);// 获取所有已安装程序的包信息 List<String> pNames = new ArrayList<String>();// 用于存储所有已安装程序的包名 // 从pinfo中将包名字逐一取出,压入pName list中 if (pinfo != null){ for (int i = 0; i < pinfo.size(); i++){ String pn = pinfo.get(i).packageName; pNames.add(pn); } } return pNames; }
//检查是否有安装wx public static boolean isHasWeiXin(Context context){ return getPackageNames(context).contains("com.tencent.mm");//如果要指定其他的app 换成指定的包名 }