通過反編譯工具,取得另外一個app的包名即可,封裝成工具類,如下:
private void doStartApplicationWithPackageName(String packagename) { // 通過包名獲取此APP詳細信息,包括Activities、services、versioncode、name等等 PackageInfo packageinfo = null; try { packageinfo = getPackageManager().getPackageInfo(packagename, 0); } catch (NameNotFoundException e) { e.printStackTrace(); } if (packageinfo == null) { return; } // 創建一個類別爲CATEGORY_LAUNCHER的該包名的Intent Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null); resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER); resolveIntent.setPackage(packageinfo.packageName); // 通過getPackageManager()的queryIntentActivities方法遍歷 List<ResolveInfo> resolveinfoList = getPackageManager() .queryIntentActivities(resolveIntent, 0); ResolveInfo resolveinfo = resolveinfoList.iterator().next(); if (resolveinfo != null) { // packagename = 參數packname String packageName = resolveinfo.activityInfo.packageName; // 這個就是我們要找的該APP的LAUNCHER的Activity[組織形式:packagename.mainActivityname] String className = resolveinfo.activityInfo.name; // LAUNCHER Intent Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_LAUNCHER); // 設置ComponentName參數1:packagename參數2:MainActivity路徑 ComponentName cn = new ComponentName(packageName, className); intent.setComponent(cn); startActivity(intent); } }