【发布时间】: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