延迟深度链接到android上的外部应用程序

延迟深度链接到android上的外部应用程序,android,android-intent,kotlin,android-tv,android-deep-link,Android,Android Intent,Kotlin,Android Tv,Android Deep Link,我想在android上做一个从我的应用程序到外部应用程序(我无法控制的应用程序)的延迟深度链接。 如果设备上没有安装应用程序,则可以在playstore中打开该应用程序,如果确实安装了该应用程序并在应用程序中的特定位置打开了一个intent,则可以完美地实现这一点。 我正在努力安装应用程序,然后当用户打开应用程序时,重定向到意图指定的位置 我现在的做法是检查应用程序是否已安装,如果已安装,我打开它的目的是在所需的位置打开应用程序。这两个意图与我预期的一样:首先打开play store并安装应用程

我想在android上做一个从我的应用程序到外部应用程序(我无法控制的应用程序)的延迟深度链接。 如果设备上没有安装应用程序,则可以在playstore中打开该应用程序,如果确实安装了该应用程序并在应用程序中的特定位置打开了一个intent,则可以完美地实现这一点。 我正在努力安装应用程序,然后当用户打开应用程序时,重定向到意图指定的位置

我现在的做法是检查应用程序是否已安装,如果已安装,我打开它的目的是在所需的位置打开应用程序。这两个意图与我预期的一样:首先打开play store并安装应用程序,另一个在特定位置打开应用程序

    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()
    }
但问题是,当应用程序未安装且用户安装并打开应用程序时,它会在应用程序的主页上打开


我如何构建一个意图,首先安装应用程序,然后在所需位置一次性打开应用程序?有可能吗?或者这是安装的应用程序的责任?

这是@pantos27的说法。似乎接收应用程序需要有一个
BroadcastReceiver()
,当安装应用程序时,它可以监听
事件。

有关更多详细信息,请参见@pantos27的说法是正确的。似乎接收应用程序需要有一个
BroadcastReceiver()
,当安装应用程序时,它可以监听
事件。

有关更多详细信息,请参见

当您点击
sharedLink
时,如果应用程序未安装在设备上,Android将不会显示该应用程序。你的问题有点让人困惑。你能提供更多关于你的需求的详细信息吗?另一个应用程序应该处理一个特定的deeplink,就像这样是的,@pantos27所说的是正确的。似乎接收应用程序需要有一个
BroadcastReceiver()
,它可以在安装应用程序时侦听事件。当您点击
sharedLink
,如果应用程序未安装在设备上,Android将不会显示应用程序。你的问题有点让人困惑。你能提供更多关于你的需求的详细信息吗?另一个应用程序应该处理一个特定的deeplink,就像这样是的,@pantos27所说的是正确的。似乎接收应用程序需要有一个
BroadcastReceiver()
,它可以在安装应用程序时监听事件。