我正在尝试制作过滤某些特定网址的意图。 我想要抓住的网址是:
可以通过
完成<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http" android:host="host.com"
android:pathPrefix="/app" android:pathPattern="[app.*]"/>
</intent-filter>
我的问题来了,因为我已经有了一个网址:
我不想尝试在该网址中打开该应用。
我已经尝试了
android:pathPattern="[app]
android:pathPattern="[app.*]
android:pathPattern="[app?.*]
android:pathPattern="[app\?.*]
android:pathPattern="[app\\?.*]
android:pathPattern="[app|app?.*]
android:pathPattern="[app|app\?.*]
android:pathPattern="[app|app\\?.*]
android:pathPattern="[nativeapp\z|nativeapp\?.*|nativeapp/.*]"
android:pathPattern="[nativeapp\\z|nativeapp\\?.*|nativeapp/.*]"
并没有其中一个有效。
甚至[app\\?.*]
已打开/ appinstall。
注意:有人问之前。我有/ appinstall控制器,因为我正在开发的应用程序和iPhone应用程序以及appInstall url有很多案例需要处理重定向到应用程序商店。
答案 0 :(得分:1)
您需要使用android:path
代替android:pathPrefix
或android:pathPattern
,因为这将完全匹配/app
的路径,/appinstall
将被忽略。
<!-- Matches "http://host.com/app" exactly, note that querystring, fragment
identifiers and the trailing slash are not considered part of the path and
are therefore ignored so URLs that will match:
http://host.com/app
http://host.com/app/
http://host.com/app?some=value
http://host.com/app/?some=value
http://host.com/app#fragmentIdentifier
http://host.com/app/#fragmentIdentifier
http://host.com/app?some=value#fragmentIdentifier
http://host.com/app/?some=value#fragmentIdentifier
URLs that will NOT match
http://host.com/app/index.htm
http://host.com/appinstall
http://host.com/appinstall/
http://host.com/app/subdirectory
http://host.com/app/subdirectory/
http://host.com/apple.htm
-->
<data android:scheme="http" android:host="host.com" android:path="/app" />
如果您还要匹配网站的根目录,则需要添加额外的<data>
元素:
<data android:scheme="http" android:host="host.com" android:path="/" />
答案 1 :(得分:0)
android:pathPattern非常简陋,并不是真正的reg-ex,它只允许运营商“。”和“*”。
为了实现目标,你必须非常聪明。一种方法可能是......
<!-- Matches "http://host.com/app" exactly, URLs that will match:
http://host.com/app
http://host.com/app/
-->
<data android:scheme="http" android:host="host.com" android:path="/" />
<!-- Matches URLs prefixed with "http://host.com/app/"
http://host.com/app/
http://host.com/app/?query=value
http://host.com/app/somepage.htm
-->
<data android:scheme="http" android:host="host.com" android:pathPrefix="/app/" />
<!-- Matches URLs prefixed with "http://host.com/app?"
http://host.com/app?query=value
-->
<data android:scheme="http" android:host="host.com" android:pathPrefix="/app?" />
击> <击> 撞击>
修改强>
请忽略上述内容,我发现这是不正确的,因为您能够匹配的“路径”不包括查询字符串或片段标识符部分或URL的尾部斜杠。我会在一秒钟内提供另一个答案。