Intent-filter仅匹配域(无路径)

时间:2016-06-16 05:46:12

标签: android android-manifest intentfilter

这看似简单,但我还无法弄清楚如何做到这一点。

当用户点击域名网址时,我需要打开我的应用。 我需要将URL与域(android:host)匹配,不带路径。 example.com或example.com /

我让它在example.com/上工作(使用斜杠),但我无法删除没有斜杠的URL:example.com

我尝试使用pathPattern / *,它也不起作用。

以下是我的Android Manifest:

<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />

    <data android:scheme="http" />
    <data android:scheme="https" />

    <data android:host="example.com" />
    <data android:host="www.example.com" />

    <data android:pathPattern="/*" />
    <data android:path="/" />
</intent-filter>

简单地说,我希望匹配带或不带斜杠的网址&#34; /&#34;。 http://example.com http://example.com/

2 个答案:

答案 0 :(得分:0)

Android Studio的URL映射编辑器对我来说具有误导性。它说https://example.org/anypath将通过以下配置映射到MainActivity,但实际上并非如此。只有https://example.org/映射到MainActivity

<intent-filter>
    <action android:name="android.intent.action.VIEW" />

    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />

    <data
        android:host="www.example.org"
        android:path="/"
        android:scheme="https" />
</intent-filter>

答案 1 :(得分:-1)

您不需要多个数据标签,在这种情况下您只需要一个。每个数据标签都可以有方案,主机,路径,路径模式等。如果没有方案,则忽略其余方案。如果没有主机(但是方案),则忽略路径属性。做你想做的正确的方法是

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

这就是你应该需要的。 Docs