我面临着与 Android Intent-Filters 特别是相关的问题。在具有路径模式的数据元素中
参考:https://developer.android.com/guide/topics/manifest/data-element
我需要匹配有效 URL 的模式,例如
anything-to-anything-trains
来自字符串-to-toString-trains
下面提到的模式几乎完美运行
<data android:pathPattern=".*to.*trains" />
<data android:pathPattern=".*to.*trains/" />
但是,当 from 或 to 包含关键字“t”时,此模式会失败
e.g.
- 火车到火车
- a 到 t 火车
- a-to-ata-火车
- ATA 至 AA 列车
对于给定的问题,包括关键字“t”的任何内容都应该与使用路径模式进行匹配。您能否建议我如何针对这种情况编写正确的模式?我是创建路径模式(正则表达式或通配符或模式全局)的初学者,但我使用的模式android:pathPattern
在正则表达式测试站点中工作,但不适用于路径模式。
此外,我们可以支持正则表达式吗特殊符号,如连字符“-”?
我发现由于模式匹配器的要求,符号 # 不起作用。
根据PATTERN_SIMPLE_GLOB,路径模式无法按照其记录方式工作,因为无需转义 Asterix。
Doc:
因为读取字符串时''作为转义字符
从 XML(在将其解析为模式之前),您将需要
双转义:例如,文字 '' 将写为“\”
字面量 '' 将写为“\\”。这基本上是
与构建字符串时需要编写的内容相同
Java代码。
注意:这个问题与正则表达式的工作与否无关。 Pattern/Regex 在正则表达式测试站点上工作正常并不意味着它可以在 Android 平台上工作,因为 Andriod Intent 过滤器在解析方面有一些限制。根据文档,它只有两个通配符。
要测试深层链接,请使用以下 adb 命令:
adb shell am start -a android.intent.action.VIEW -d“深层链接”
[包名(可选)]
Example:
adb shell am start -a android.intent.action.VIEW -d "https://www.website.com/a-to-a-trains" com.website.sample.package