安卓跳转外部应用指定页面
2021-03-10 本文已影响0人
蓝不蓝编程
- 目标app中的activity设置
<activity
android:name=".BActivity"
android:launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
- 跳转方式
fun launchPage(appPackageName: String, activityPath: String) {
val intent = Intent()
val comp = ComponentName(appPackageName, activityPath)
intent.component = comp
intent.putExtra("other", "true")
intent.action = "android.intent.action.VIEW"
startActivity(intent)
}
调用样例:
launchPage("com.example.launchmodedemo", "com.example.launchmodedemo.BActivity")
如果是跳转其他应用,不指定activity,可以用下面方式:
/**
* 跳转到指定app,如跳转到qq
* launchApp(this, "com.tencent.mobileqq")
*/
private fun launchApp(context: Context, appPackageName: String) {
//判断当前手机是否有要跳入的app
if (isAppInstalled(context, appPackageName)) {
//如果有根据包名跳转
context.startActivity(context.packageManager.getLaunchIntentForPackage(appPackageName))
} else {
//如果没有,走进入系统商店找到这款APP,提示你去下载这款APP的程序
goToMarket(context, appPackageName)
}
}
//这里是进入应用商店,下载指定APP的方法。
private fun goToMarket(context: Context, packageName: String) {
val uri: Uri = Uri.parse("market://details?id=$packageName")
val goToMarket = Intent(Intent.ACTION_VIEW, uri)
try {
context.startActivity(goToMarket)
} catch (e: Exception) {
}
}
//这里是判断APP中是否有相应APP的方法
private fun isAppInstalled(context: Context, packageName: String): Boolean {
return try {
context.packageManager.getPackageInfo(packageName, 0)
true
} catch (e: Exception) {
e.printStackTrace()
false
}
}