【问题标题】:How to handle deeplinking with custom scheme (Android)如何使用自定义方案处理深度链接(Android)
【发布时间】:2016-05-08 04:23:56
【问题描述】:

我希望能够处理这样的深层链接:

appnm://typeA/12
appnm://typeA/42
appnm://typeA/99
....

appnm://typeB/43
appnm://typeB/092
appnm://typeB/....
  1. 我是否必须为 A 类和 B 类进行两项活动。或者我可以在一项活动中同时处理这两项活动吗? 例如,这行得通吗:

    数据 android:scheme="appnm" 机器人:主机=“” android:pathPrefix="/" />

  2. 当我在手机上输入一些注释“http:// ...”时,它会自动让我选择像链接一样输入它。但是在我的情况下“appnm:// ...”它没有。那么如何使用自定义方案测试深层链接?

【问题讨论】:

  • 看看这篇帖子stackoverflow.com/questions/31876003/…这能回答你的问题吗?
  • 是的,谢谢,在我的搜索中没有看到该帖子。但是,我仍然不确定我的第一个问题。我需要使用两项活动还是一项活动? ( typeA 和 typeB )

标签: android deeplink


【解决方案1】:

您可以添加 mime 类型,这些类型将指定深度链接的数据类型。如果您希望所有深层链接都转到同一个活动,您只需在该活动中声明意图过滤器,仅使用 uri 方案。但是,声明 mime 类型可用于将不同类型的数据定向到不同的活动。

这是否澄清了你的疑问?

【讨论】:

  • 但据我了解,mime 类型表示某种特定类型的数据(图像、音频等)。我将如何在这里使用它?我需要知道链接是appnm://typeA/... 还是appnm://typeB/...,这样我才能知道应用程序启动时要打开哪个片段。谢谢。
  • 当您的活动在接收到URI方案时被触发时,您可以获得触发器的数据,如:Intent intent = getIntent(); Uri 数据 = intent.getData();这可以帮助您区分触发器并相应地启动不同的活动
  • 我知道,但我将如何处理清单中的情况?我可以只输入 android:scheme="appnm" 而没有 host 和 pathPrefix 吗?谢谢!
  • 您还可以为意图过滤器设置其他属性,即:android:pathandroid:pathPrefix您可以参考此开发人员页面developer.android.com/guide/topics/manifest/data-element.html为不同的路径前缀设置不同的意图过滤器可能会诡计!
  • 你的最终目标是什么?如果您希望两个不同的主机去同一个活动,您可以在同一个活动中声明两个意图过滤器(或者如果可以接受,则根本不声明主机)。如果你想让不同的主机去不同的活动,你可以为每个活动指定不同的主机,为每个活动制作单独的意图过滤器
【解决方案2】:

DeepLinkDispatchairbnb 的库将帮助您处理所有自定义 URL。

github的库页面上解释了如何使用

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-10
    • 2018-01-20
    • 2022-12-29
    • 2015-09-22
    • 2017-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多