推迟深度链接到Android上的外部应用

时间:2019-06-19 12:35:21

标签: android android-intent kotlin android-tv android-deep-link

我想将我的应用程序的深层链接延迟到Android上的外部应用程序(不受我控制的应用程序)。 如果未在设备上安装该应用程序,则可以完美地在Playstore中打开该应用程序;如果确实已安装该应用程序,则可以在应用程序中的特定位置打开意图。 我正在努力安装应用程序,然后在用户打开应用程序时将其重定向到Intent指定的位置。

我现在的操作方式是检查是否已安装该应用程序,如果已安装,则可以在所需位置打开该应用程序。这两个意图均符合我的预期:首先打开Play商店并安装应用程序,另一个在特定位置打开应用程序。

    fun start() {
        if (isAppInstalled()) {
            startAppWithIntent(deepLink)
        } else {
            goToPlayStore()
        }
    }

    private fun isAppInstalled(): Boolean =
        activity.packageManager.getLaunchIntentForPackage("com.myapp.xx") != null

    private fun startAppWithIntent(deepLink: String) {
        val startAssetIntent = Intent(Intent.ACTION_VIEW, Uri.parse(deepLink))
        activity.startActivity(startAssetIntent)
    }

    private fun goToPlayStore() {
        val goToPlayStoreIntent = Intent(
            Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=com.myapp.xx")
        ).apply {
            setPackage("com.android.vending")
        }

        activity.startActivity(goToPlayStoreIntent)
        activity.finish()
    }

但是,与此有关的问题是,当未安装该应用程序并且用户安装并打开该应用程序时,它将在该应用程序的主页上打开。

我该如何构造一个Intent,先安装应用程序,然后再一次在所需位置打开该应用程序?可能吗还是这是已安装应用的责任?

1 个答案:

答案 0 :(得分:0)

@ pantos27所说的是正确的。似乎接收方的应用程序需要具有BroadcastReceiver()才能在安装应用程序时收听event。 有关更多详细信息,请参见Official Docs