1

我想在 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?甚至可能吗?或者这是已安装应用程序的责任?

4

1 回答 1

0

@pantos27 说的是正确的。似乎接收应用程序需要有一个BroadcastReceiver()可以event在安装应用程序时监听的。更多细节见官方文档

于 2019-09-03T06:27:45.810 回答