打開第三方應用之前需要先判斷該應用是否存在,代碼如下:
public boolean isAppInstalled(Context context, String packageName) {PackageManager packageManager = context.getPackageManager();try {packageManager.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES);return true;} catch (PackageManager.NameNotFoundException e) {return false;}}
如果判斷第三方應用存在則可以進行應用打開了,代碼如下:
if (isAppInstalled(MainActivity.this, packageName)) {Intent intent = new Intent();ComponentName comp = new ComponentName("第三方應用包名", "第三方應用第一個activity");intent.setComponent(comp);intent.setAction("android.intent.action.MAIN");intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);startActivity(intent);} else {Toast.makeText(MainActivity.this, "請先安裝該應用", Toast.LENGTH_SHORT).show();}
但是我使用中發現一個問題,使用判斷第三方應是否存在時在Android高版本系統會一直獲取不到。后來研究發現需要在AndroidManifest.xml中新增以下權限以及queries
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"tools:ignore="QueryAllPackagesPermission" /><queries><package android:name="第三方應用包名" />
</queries>