如何使用 PathPattern 来创建 DeepLink Apps Android?

Bil*_*ari 4 android permalinks deep-linking

我已阅读有关在 android studio 3.0 中创建深层链接和使用应用链接服务的文档。它非常简单且易于理解,但是当我的 URL 没有前缀路径时,我会遇到一些问题。例子 :

https://example.com/ / AMP

没有前缀,它直接是 url 模式。当我使用正则表达式时

^[a-z0-9]+(?:-[a-z0-9]+)*$

它不起作用,错误显示为

该 URL 未映射到任何活动

当我只使用星星时,例如:

https://example.com/ */amp

它的显示似乎错误。我在这一步卡住了,我检查了很多关于 deeplink 的教程,并且总是使用 pathPrefix 而不是 pathPattern。

请有人帮助我。太感谢了

Pav*_*ngh 8

android 深度链接的一个常见缺点是它只支持*.正则表达式字符。它是中提到的Android文档,并可以在源代码中被观察到

从文档:

有关这三种模式的更多信息,请参阅 PATTERN_LITERAL、PATTERN_PREFIX 和 PATTERN_SIMPLE_GLOBPatternMatcher 类中的说明。

PATTERN_SIMPLE_GLOB 用于正则表达式,它表示只匹配

/** * 模式类型:使用 * 简单的 glob 语法解释给定的模式,以匹配它所测试的字符串。* 在此语法中,您可以使用该'*'字符匹配零个或 * 多个紧接在前面的字符。如果它前面的 * 字符'.'将匹配任何字符。字符 *'\'可用作转义符。这本质上只提供普通正则表达式的 '*' * 通配符部分。*/

public static final int PATTERN_SIMPLE_GLOB = 2;

所以只有*,.\是允许的。使用其他模式文字+,?等;会导致失败。

您可以使用您的工作选项,也可以使用

https://example.com/./....*
Run Code Online (Sandbox Code Playgroud)

....*至少 3 个字符则.*表示 0 个或更多字符

<activity
    android:name="packagename.ActivityName" >
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="http"
              android:host="www.example.com"
              android:pathPattern="/./....*" />
        <!-- note that the leading "/" is required for pathPrefix-->
    </intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)