打開其他應用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(); } }