使用path,pathPrefix或pathPattern的Intent过滤器

时间:2013-10-16 05:35:14

标签: android android-intent uri intentfilter

我的测试uri字符串是

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

我在清单

中制作了intent-filter

一个。方案&主持人(它有效,但我不想要)

<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&amp; 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)

时启动我的应用

3 个答案:

答案 0 :(得分:15)

你在开头就错过了斜线。以下应该有效:

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

OR

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

答案 1 :(得分:5)

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

<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&key2=value2

有关intent-filter

android doc for data tag的更多信息

答案 2 :(得分:4)

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

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