使用路径、路径前缀或路径模式的意图过滤器

Posted

技术标签:

【中文标题】使用路径、路径前缀或路径模式的意图过滤器【英文标题】:Intent filter using path,pathPrefix, or pathPattern 【发布时间】:2013-10-24 03:01:32 【问题描述】:

我的测试 uri 字符串是

http://test.host.com/path/test.html?key1=val1&key2=val2

我在清单中制作意图过滤器

A.方案和主机(它有效,但我不想要)

<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <data
        android:scheme="http"
        android:host="test.host.com"
    />
    <category android:name="android.intent.category.BROWSABLE" />
    <category android:name="android.intent.category.DEFAULT" />
</intent-filter>

B. A & path(pathPrefix, pathPattern) (没用)

    <data
        android:scheme="http"
        android:host="test.host.com"

        1. android:path="path/test.html" -> not worked (link to chrome broswer)
        2. android:path="path"           -> not worked (link to chrome broswer)
        3. android:pathPrefix="path"     -> not worked (link to chrome broswer)
        4. android:pathPattern="user/invite.*"  -> same (I do not know pattern)

    />

我想在(路径/test.html)时启动我的应用,

【问题讨论】:

【参考方案1】:

您缺少开头的斜线。以下应该有效:

android:path="/path/test.html"

android:pathPrefix="/path/test.html"

【讨论】:

android:pathPrefix="/path/test.html"==> 它也可以。【参考方案2】:

如果您需要启动您的应用仅当链接/path/test.html,则仅在data 标记中使用android:path 属性

<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <data android:scheme="http"
        android:host="test.host.com"
        android:path="/path/test.html" />
    <category android:name="android.intent.category.BROWSABLE" />
    <category android:name="android.intent.category.DEFAULT" />
</intent-filter>

由于android:path 属性指定了与 Intent 对象中的完整路径匹配的完整路径。 但是 android:pathPrefix 属性指定了一个部分路径,该部分路径仅与 Intent 对象中路径的初始部分匹配。

所以当使用android:pathPrefix 属性而不是android:path 属性时,这意味着您的应用可能会以/path/test.html/path/test.html?key1=value1/path/test.html?key1=value1&amp;key2=value2 等启动

更多关于android doc for data tag的信息进入intent-filter

【讨论】:

【参考方案3】:

pathPrefix 属性指定仅与 Intent 对象中的路径的初始部分匹配的部分路径。

android:pathPrefix="/path/" 也可以。

【讨论】:

以上是关于使用路径、路径前缀或路径模式的意图过滤器的主要内容,如果未能解决你的问题,请参考以下文章

Shiro路径模式排除

注册不包含子域的 Android 深层链接路径

如何在nodejs中获取文件夹大小,排除具有glob模式的某些路径?

filter获得路径内置参数

在路径更改时使用过滤器时未呈现路径模型

cas有些请求路径不需要单点登录过滤器拦截