【问题标题】:Android intent filter (android:host) with regexp带有正则表达式的 Android 意图过滤器 (android:host)
【发布时间】:2015-05-13 06:33:52
【问题描述】:

是否可以在意图过滤器上使用正则表达式 (regexp) 来过滤各种主机地址?我试着写了,但失败了,所以寻求帮助。

我有很多域,想编写意图过滤器来匹配所有这些示例:

  1. http://example.com/
  2. http://example.ru/
  3. http://example.org/
  4. http://example.biz/

以及仍受支持的先前版本的更多内容。

  1. http://previousversion.com/
  2. http://previousversion.ru/

...

也可以有http和https;有和没有 www。

下面的代码示例正在运行,但如果我想编写所有条件,它会在清单中占用大量空间,所以我正在寻找更好的方法。要点路径前缀相同,但host和scheme在变化。

<data
     android:host="www.example.com"
     android:pathPrefix="/operation/accept/"
     android:scheme="https"/>

<data
     android:host="example.com"
     android:pathPrefix="/operation/accept/"
     android:scheme="https"/>

<data
     android:host="www.example.com"
     android:pathPrefix="/operation/accept/"
     android:scheme="http"/>

<data
     android:host="example.com"
     android:pathPrefix="/operation/accept/"
     android:scheme="http"/>
...

【问题讨论】:

  • 我也尝试过这样做,但 IIRC 似乎在方案的主机部分不接受通配符。
  • 也许不能以更好的方式完成:(

标签: android intentfilter


【解决方案1】:

android:host似乎不支持正则表达式,它只支持星号通配符,你可以检查这个https://developer.android.com/guide/topics/manifest/data-element

但是,我找到了另一种只写一次路径的方法,如下所示。 (参考:https://riptutorial.com/android/example/12833/multiple-domains-and-multiple-paths

<data android:scheme="https"
        android:host="*.example.com" />

<data android:scheme="https"
        android:host="*.example2.com" />

<data android:path="/operation/accept/" />

它会产生以下链接。

  • https://*.example.com/operation/accept/
  • https://*.example2.com/operation/accept/

【讨论】:

    【解决方案2】:

    没有正则表达式支持。您可以使用 pathPattern ,它只允许您在路径段中使用 .* 和 * 通配符。对于主机,您只能使用 * 作为第一个字符。

    【讨论】:

    • 只是一个小的修正。 android:host 支持 '' 通配符作为初始字符。主机部分权限匹配。可以以单个 '' 开头以通配主机名的前面。
    • @luciofm android:host 支持通配符是什么意思? " 字符类型会破坏格式。这是否意味着您可以使用通配符来接受任何主机?
    • @themichaelscott 是的,你可以使用android:host="*"android:host="*.something.com"
    • @luciofm 答案应该是公认的答案,我确认“*”可以作为通配符使用,即使“.*”由于某种原因似乎不起作用:/
    猜你喜欢
    • 1970-01-01
    • 2014-11-06
    • 2012-04-22
    • 1970-01-01
    • 2022-08-17
    • 1970-01-01
    • 1970-01-01
    • 2018-12-27
    • 1970-01-01
    相关资源
    最近更新 更多