打开第三方应用之前需要先判断该应用是否存在,代码如下:
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>