【问题标题】:Deferred deep-linking to an external app on android延迟深度链接到 android 上的外部应用程序
【发布时间】:2019-11-02 04:48:31
【问题描述】:

我想在 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,首先安装应用程序,然后在所需位置一次性打开应用程序?甚至可能吗?或者这是已安装应用的责任?

【问题讨论】:

  • 当您点击sharedLink 时,如果设备上未安装应用程序,Android 将不会显示该应用程序。你的问题有点令人困惑。您能否详细说明您的要求?
  • 另一个应用程序应该像这样处理特定的深层链接developer.android.com/studio/write/app-link-indexing
  • 是的,@pantos27 说的是正确的。接收应用似乎需要有一个BroadcastReceiver(),它可以在安装应用时监听事件。

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


【解决方案1】:

@pantos27 所说的是正确的。似乎接收应用程序需要有一个BroadcastReceiver(),它可以在安装应用程序时收听event。 详情请见Official Docs

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-08
    • 1970-01-01
    • 2020-05-14
    • 1970-01-01
    • 2016-09-25
    • 2014-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多