我们有一个使用Deeplinks的应用程序。我们还使用了Android导航组件。
目前,我们在out navigation.xml文件中配置Deeplinks,这很好,但是我们现在需要能够在构建时根据set变量添加另一个Deeplink。
目前,我们以下列形式在out navigation.xml文件中配置Deeplinks:
<deepLink
android:autoVerify="true"
app:uri="foo.bar.baz/pull/{quxArg}/{quuxArg}" />
我们现在需要能够基于set在构建时创建额外的Deeplink。
示例:
DEEPLINK_ENVAR = "replacement.com"
Build.gradle:
manifestPlaceholders = [deeplink:DEEPLINK_ENVAR]
navigation.xml:
<deepLink
android:autoVerify="true"
app:uri="${deeplink}/pull/{quxArg}/{quuxArg}" />
请注意以上内容不起作用。
如果这只是清单中的意图过滤器,我们可以使用Manifest占位符来完成这个任务,并在app.gradle中设置它们。然而,在navigation.xml中设置的Deeplinks被解析为URI,并在替换它们之前销毁任何占位符。
有没有人尝试过类似的东西?我试图避免运行预构建脚本来直接模板导航文件。
期望的结果:
我希望能够在构建时添加一个附加的深度链接(实际上是4到不同的目的地),同时使用Android导航组件。
发布于 2019-08-27 06:03:50
不知道我是否完全理解但是..。您应该能够将几个deepLinks添加到一个操作中。如果您要求它重定向到另一个片段,您可以尝试使用"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
}
}
}
这只是我怎么做的一个想法。
以同样的方式,您可以检查构建或者任何您需要比较的东西,而不是检查一些令牌。
发布于 2019-08-27 14:04:50
NavDestination:
public final void addDeepLink (String uriPattern)
添加到此目标的深度链接。发送到
NavController.handleDeepLink(Intent)
或NavController.navigate(Uri)
的匹配Uris将触发导航到此目的地。
这听起来对你有帮助。我自己还没试过呢。
https://stackoverflow.com/questions/57496296
复制相似问题