- 目標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
}
}