打开其他应用app的前提是需要知道包名,知道包名后打开应用就不是难事了,直接上图....
// 查询指定包名信息,如打开QQ,包名:
String qqPackageName = "com.tencent.mobileqq";
// 查询指定包名信息,如打开微信,包名:
String wxPackageName = "com.tencent.mm";
//百度地图包名
String bdPackageName = "com.baidu.BaiduMap";
String appName = wxPackageName;
第一种方式,直接启动,反应有点慢:
ackageManager manager = getPackageManager(); Intent launchIntentForPackage = manager.getLaunchIntentForPackage(appName); startActivity(launchIntentForPackage);
第二种方式,直接启动,速度相当给力:
public void openActivity(View view) { // 获取包管理器 PackageManager manager = getPackageManager(); // 指定入口,启动类型,包名 Intent intent = new Intent(Intent.ACTION_MAIN);//入口Main intent.addCategory(Intent.CATEGORY_LAUNCHER);// 启动LAUNCHER,跟MainActivity里面的配置类似 intent.setPackage(appName);//包名 //查询要启动的Activity List<ResolveInfo> apps = manager.queryIntentActivities(intent, 0); if (apps.size() > 0) {//如果包名存在 ResolveInfo ri = apps.get(0); // //获取包名 String packageName = ri.activityInfo.packageName; //获取app启动类型 String className = ri.activityInfo.name; //组装包名和类名 ComponentName cn = new ComponentName(packageName, className); //设置给Intent intent.setComponent(cn); //根据包名类型打开Activity startActivity(intent); } else { Toast.makeText(this, "找不到包名;" + appName, Toast.LENGTH_SHORT).show(); } }