意图过滤器和android:pathPattern(Intent Filters and andro

2019-09-02 13:10发布

在我的应用程序,我想处理使用以下模式链接:

scheme://host/folder1/folder2/folder3/folder4/article

我得到了它暂时无法工作,通过以下事项:

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

然而,正如你可以想像,打开与开头的链接scheme://host ,我要确保我只能拿起那些拥有上述模式,其中的页面是主机内部的4个文件夹。

另一个小问题是,文件夹名称是绝不相同,因此,我不能简单地用android:path 。 另外值得一提的是, android:pathPrefix是不一样的,因为前三个文件夹的日期有关。

例如,网址是strucutred是这样的:

scheme://host/year/month/day/articleType/article

我一直在阅读文档和问题,如何使用android:pathPattern但我真的不明白我应该在打字。

有任何想法吗?

谢谢!

编辑

经建议,我尝试:

android:pathPattern="/.*/.*/.*/.*/.*"

其中每个“*”代表一个文件夹,但似乎仍然拿起不在文章的其他网址。 例如,下面是两个不同的网址:

网址我想处理:

http://www.laprensa.com.ni/2013/05/10/vida/145996-lionel-richie-defiende-a

网址我不想处理

http://www.laprensa.com.ni/2013/05/10/vida/

我想这里的问题是,它们都具有水平的量相同,唯一的区别是,一个居然有后,去年的东西'/' ,任何其他想法,我可以试试吗? 我也尝试增加一个'/.*'但完全停止工作以及应用程序不再办理任何链接时期:(

Answer 1:

你接近,但错过了最后一部分。 这应该为你工作:

android:pathPattern="/.*/.*/.*/.*/..*"

这将匹配任何路径有四个重复/[anything]以及强制执行,你必须有后终东西 /

就像你问:

网址我想处理:

http://www.laprensa.com.ni/2013/05/10/vida/145996-lionel-richie-defiende-a

网址我不想处理

http://www.laprensa.com.ni/2013/05/10/vida/

说明

. 强制“的任何字符之一”的图案。 在.*强制实施“的任何号码(或没有!)的任何字符”。

结合这两个, ..*强制“必须至少有一个可以提供任何数量的任何字符,而是”



Answer 2:

您应该添加完全android:pathPattern属性来配置你定义。 正如报道的Android文档 , android:pathPattern可以包含以下通配符构建简化正则表达式:

  • 星号(“*”)匹配的0到紧接在前的字符的许多事件的序列。
  • 期间跟随由星号(“*”)匹配的0到许多字符的任何序列。

你的情况:

<data android:scheme="http"
      android:host="www.laprensa.com.ni"
      android:pathPattern="/.*/.*/.*/.*/.*" />

其中每个*代表一个文件夹名。



文章来源: Intent Filters and android:pathPattern