在 android 上延迟了到外部应用程序的深层链接

Deferred deep-linking to an external app on android

我想在 android 上从我的应用程序到外部应用程序(我无法控制的应用程序)执行 deferred-link。 如果设备上未安装该应用程序,它可以完美地在 Playstore 中打开该应用程序;如果确实安装了该应用程序,它也可以在应用程序的特定位置打开一个意图。 我正在努力安装应用程序,然后当用户打开应用程序时,重定向到 Intent 指定的位置。

我现在的做法是检查该应用程序是否已安装,如果已安装,我将打开它,目的是在所需位置打开该应用程序。这 2 个意图如我所料:第一个打开 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?有可能吗?或者这是安装的应用程序的责任?

@pantos27 说的是对的。似乎接收应用程序需要有一个 BroadcastReceiver(),它可以在安装应用程序时收听 event。 有关详细信息,请参阅 Official Docs