gpt4 book ai didi

android - 如何在构建时使用占位符和导航组件创建深层链接

转载 作者:太空狗 更新时间:2023-10-29 14:35:14 32 4
gpt4 key购买 nike

我们有一个使用深层链接的应用程序。我们还使用 Android 导航组件。

目前我们在 navigation.xml 文件中配置我们的深层链接,这工作正常,但我们现在需要能够在构建时基于设置的环境变量添加另一个深层链接。

  • 我尝试在 build.gradle 中设置字符串资源并在 navigation.xml 中引用这些资源。

  • 我也曾尝试在 navigation.xml 中设置占位符,但无法替换它,因为它已被解析为 URI。

  • 我还尝试在带有占位符的 list 中设置直接 Intent 过滤器,这会起作用,但我们失去了来自导航组件的良好路由。

目前我们在 navigation.xml 文件中配置我们的深层链接,格式如下:

 <deepLink
android:autoVerify="true"
app:uri="foo.bar.baz/pull/{quxArg}/{quuxArg}" />

我们现在需要能够在构建时基于一组 Envar 创建一个额外的 Deeplink。

示例:

DEEPLINK_ENVAR = "replacement.com"

构建.gradle:

manifestPlaceholders = [deeplink:DEEPLINK_ENVAR]

导航.xml:

<deepLink
android:autoVerify="true"
app:uri="${deeplink}/pull/{quxArg}/{quuxArg}" />

请注意以上内容无效。

如果这只是 Manifest 中的一个 intent-filter,我们可以使用 Manifest 占位符来完成这个任务并在 app.gradle 中设置它们。然而,在 navigation.xml 中设置的深层链接被解析为 URI,并在替换之前销毁所有占位符。

有没有人尝试过类似的事情?我试图避免必须运行预构建脚本来直接为导航文件制作模板。

期望的结果:

我希望能够在使用 Android 导航组件的同时在构建时添加一个额外的深层链接(实际上是 4 个到不同的目的地)。

最佳答案

不确定我是否完全理解但是...您应该能够将多个深度链接添加到单个操作。如果您需要它重定向到不同的 fragment ,您可以尝试使用“deepLinkTokenCheckFragment”或其他东西,它接收 deepLink,然后从中提取信息,并可以将用户重定向到您希望他们转到的页面。

我有一个应用程序可以做这样的事情

    private fun extractAction() {
if (ACTION_VIEW == parent.intent.action) {
// Collect information to know where to redirect here.....
val actionType = parent.intent.data
?.toString()
?.substringBefore('?')
?.substringAfterLast('/')
action = get information or token from the url here //?.substringBefore('?') ?.substringAfterLast('/')
when (action) {
"change_password" -> go to change password screen
"change email" -> go to change email screen
"go to other" -> go to other screen
}
}
}

这只是我如何做到的想法。

以同样的方式,您可以检查构建或任何需要与之比较的内容,而不是检查某些标记。

关于android - 如何在构建时使用占位符和导航组件创建深层链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57496296/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com