给出以下URL:
1. www.example.com
2. www.example.com/a
通过deeplinking,我希望我的应用仅对1
和不 2
做出反应。
<data
android:host="*.example.com"
android:pathPrefix="/"
android:scheme="http"/>
当然,这会抓住所有www.example.com/...
个网址,如何只匹配www.example.com
而没有任何路径而且不匹配www.example.com/a
?
答案 0 :(得分:1)
使用&#39;路径&#39;而不是&#39; pathPrefix&#39;或者&#39; pathPattern&#39;工作,所以:
<data
android:host="*.example.com"
android:path="/"
android:scheme="http"/>
匹配www.example.com
以及www.example.com/
,但不匹配www.example.com/a
,这正是我想要的。
答案 1 :(得分:0)
我遇到了同样的问题,并找到了匹配裸域的解决方案,例如www.example.com
<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" android:host="www.example.com"/>
</intent-filter>
关键是添加intent-filter
而不添加任何path
属性。
答案 2 :(得分:0)
这是对我有用的方法,将路径设置为空,并包括一个工具:忽略以避免出现皮棉错误。
<data
android:host="*.example.com"
android:path=""
android:scheme="http"
tools:ignore="AppLinkUrlError"
/>
答案 3 :(得分:0)
老问题,但对我有用的是添加两个数据输入
<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="*.example.com"
android:path=""
tools:ignore="AppLinkUrlError"
android:scheme="https" />
<data
android:host="*.example.com"
android:path="/"
android:scheme="https" />
</intent-filter>
仅添加其中一个即可处理 www.example.com
或 www.example.com/
。
您还可以将它们放在不同的意图过滤器中。
答案 4 :(得分:0)
如果您想同时匹配 http://example.com/
和 http://example.com
,我可以确认@Anigif 评论:使用包含 data
的单个 path="/"
元素不再起作用,因为它只匹配 http://example.com/
,但不匹配 http://example.com
。
但是,向同一个意图添加两个数据元素是有效的:
<data android:scheme="http" android:host="*.example.com" android:path="/"/>
<data android:scheme="http" android:host="*.example.com" android:path=""/>
这匹配 http://example.com/
和 http://example.com
但不匹配 http://example.com/a
。