项目中有一个需求,通过一个app 启动另一个app,如果有app 可以直接启动,没有则去应用市场下载
PackageManager packageManager = getPackageManager(); String packname="";//此处为包名 if (checkPackInfo(packname)) {//检查是否有要打开的app Intent intent = packageManager.getLaunchIntentForPackage(packname); startActivity(intent); } else { launchAppDetail(packname,"");//跳转到应用市场 }
/** * 检查包是否存在 * * @param packname * @return */ private boolean checkPackInfo(String packname) { PackageInfo packageInfo = null; try { packageInfo = getPackageManager().getPackageInfo(packname, 0); } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } return packageInfo != null; }/** * 启动到应用商店app详情界面 * * @param appPkg 目标App的包名 * @param marketPkg 应用商店包名 ,如果为""则由系统弹出应用商店列表供用户选择,否则调转到目标市场的应用详情界面,某些应用商店可能会失败 */ public void launchAppDetail(String appPkg, String marketPkg) { try { if (TextUtils.isEmpty(appPkg)) return; Uri uri = Uri.parse("market://details?id=" + appPkg); Intent intent = new Intent(Intent.ACTION_VIEW, uri); if (!TextUtils.isEmpty(marketPkg)) { intent.setPackage(marketPkg); } intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); } catch (Exception e) { e.printStackTrace(); } } }另外附加以为大神的关于该功能的文章地址:http://www.jianshu.com/p/42ae7066f8f3