【问题标题】:Android url scheme in manifest清单中的 Android url 方案
【发布时间】:2014-01-14 13:32:14
【问题描述】:

我想识别不同的 url 并用特定的活动打开它。

我在清单中声明了意图过滤器,如果我使用简单的条件,它就可以工作:

<data
    android:host="www.myhost.fr"
    android:pathPattern="/.*\\.shtml"
    android:scheme="http" />

如果我想区分“故事”和“视频”这样的关键词,我会像这样改变我的 pathPattern。

活动故事:

<data
    android:host="www.myhost.fr"
    android:pathPattern="/.*story\\.shtml"
    android:scheme="http" />

活动视频:

 <data
    android:host="www.myhost.fr"
    android:pathPattern="/.*video\\.shtml"
    android:scheme="http" />

编辑 我尝试拦截的网址:

故事和视频的 ID 位于“/”之前。对于匹配,它是不同的。

当我测试此解决方案时,无法识别该模式。如果我在网络上用正则表达式测试它,它说它是正确的。

有什么想法吗?

【问题讨论】:

  • 你想精确匹配哪个网址?
  • 我添加了,感谢您的关注
  • 我不是 100% 确定,所以我不会创建答案,但您可以尝试:“/.*/video.shtml”
  • 那行不通。首先,您必须转义要解释的特殊字符,例如“.”。我的第一个例子正在工作。当我尝试使用“word”来区分 2 种不同类型的 url 时,就会出现问题。

标签: android regex android-manifest url-scheme


【解决方案1】:

您想捕获包含 .shtml 的 ID 和特定单词?

我试过了:

((\d+)/(story\.shtml|video\.shtml))|(match_mtc(\d+)\.shtml)

如果是故事或视频,它会分组捕获 ID 和关键字,如果是“match_mtc”,则仅捕获 ID。

您可能必须像这样对 Java 正则表达式中的字符进行双重转义:

((\\d+)/(story\\.shtml|video\\.shtml))|(match_mtc(\\d+)\\.shtml)

然后您可以使用 $1,$2,...,$n 调用组并获取您需要的特定字符串。

【讨论】:

  • 感谢您的回答。实际上,我的问题集中在清单上。正则表达式在清单文件中极为有限。我们唯一的解决方案是声明几个数据项,例如: (其他的少"/.*")。希望对您有所帮助!
猜你喜欢
  • 2014-11-29
  • 2015-06-13
  • 2013-11-10
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
  • 2012-12-25
  • 2011-04-30
  • 2011-12-14
相关资源
最近更新 更多