安卓跳轉外部應用指定頁面

  1. 目標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>
  1. 跳轉方式
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
        }
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章