Android app 打开第三方APP有以下几种方式
1.包名拉起
val intent = packageManager.getLaunchIntentForPackage("com.example.testappb")
startActivity(intent)
优点:方便省事
缺点:暴露包名,如果对方隐藏图标,获取不到intent
2.包名 特定activity拉起
val intent = Intent(Intent.ACTION_MAIN)
val componentName =
ComponentName("com.acusee.ar", "com.acusee.ar.MainActivity")
intent.component = componentName
startActivity(intent)
优点:隐藏图标,也可以唤起
缺点:需要知道包名以及activity 的全包名 在activity 的xml中需要配置
android:exported="true"
3.url 拉起
val url = "sysc://main.app?key=传递的参数"
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
startActivity(intent)
优点:隐藏图标,也可以唤起,不暴露包名
缺点:需要配置
<intent-filter>
<data
android:host="pull.csd.demo"
android:path="/cyn"
android:scheme="csd" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
tips:还要注意在唤起三方app 时首先要判断 对方是否已经安装
private boolean checkPackInfo(String packname) {
PackageInfo packageInfo = null;
try {
packageInfo = getPackageManager().getPackageInfo(packname, 0);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
return packageInfo != null;
}