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