我已阅读有关在Android Studio 3.0中创建深度链接并使用应用程序链接服务的文档。它非常简单且易于理解,但是当我的URL没有前缀路径时,我一点问题都没有。例子:
https://example.com/ / amp
没有前缀,它是直接的url模式。 当我使用正则表达式
^ [a-z0-9] +(?:-[a-z0-9] +)* $
它不起作用,错误显示为
该网址未映射到任何活动
当我只使用星号时,例如:
https://example.com/ * / amp
显示错误。我陷入了这一步,我检查了很多有关Deeplink的教程,并且始终使用pathPrefix而不是pathPattern。
请有人帮我。非常感谢你
答案 0 :(得分:2)
这是android深层链接中的一个常见缺点,它仅支持*
和.
正则字符。在Adnroid docs和can be observed in source code中提到过。
来自文档
有关这三种模式的更多信息,请参见 PATTERN_LITERAL,PATERN_PREFIX和
PATTERN_SIMPLE_GLOB
在PatternMatcher类中。
PATTERN_SIMPLE_GLOB用于正则表达式,它说仅匹配
/ ** *模式类型:给定的模式用 *简单的glob语法,用于与要测试的字符串进行匹配。 *使用这种语法,您可以使用
'*'
字符来匹配零或 *之前更多次出现该角色。如果 *'.'
之前的字符将与任何字符匹配。性格 *'\'
可以用作转义符。这实际上仅提供“ *” *普通正则表达式的通配符部分。 * /
public static final int PATTERN_SIMPLE_GLOB = 2;
因此仅允许*
,.
和\
。其他模式文字+,?
等的用法;将导致失败。
您可以使用工作选项,也可以使用
https://example.com/./....*
....*
至少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>