延迟深度链接到 android 上的外部应用程序
Posted
技术标签:
【中文标题】延迟深度链接到 android 上的外部应用程序【英文标题】:Deferred deep-linking to an external app on 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()
,它可以在安装应用时监听事件。
【参考方案1】:
@pantos27 所说的是正确的。似乎接收应用程序需要有一个BroadcastReceiver()
,它可以在安装应用程序时收听event
。
详情请见Official Docs
【讨论】:
以上是关于延迟深度链接到 android 上的外部应用程序的主要内容,如果未能解决你的问题,请参考以下文章
XING - 如何在 iOS 上的 Android 上进行深度链接?
在 React Native 应用程序中使用 Branch.io 在 iOS 中延迟深度链接