2013-02-27 64 views
3

我们有一个可以打开某些类型的文件的android应用程序。我宣布在每一个像这样的AndroidManifest.xml文件的意图过滤器(样本扩展:EXT):打开文件,如myFile.ext的时候,但是,如果一个文件被命名为是否可以以不区分大小写的方式匹配intent-filter的pathPattern?

 <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="file" android:host="*" android:mimeType="*/*" android:pathPattern=".*\\.ext"/> 

     </intent-filter> 

一切都很好myFile.EXTmyFile.ExT等意图过滤器似乎没有拿起它。除了枚举意图过滤器中所有可能的大写字母排列外,还有一种方法可以指定不区分大小写的匹配吗?

文档here提及数据元素的其他属性区分大小写,但不提及pathPattern。我试图将大小写不敏感的正则表达式的java指令添加到模式中,导致"(?i).*\\.ext"和OR'ing multile在一起,如".*\\.ext|.*\\.EXT",但这似乎也不起作用。

我将不胜感激任何帮助或建议。

谢谢!

回答

3

android:pathPattern不是一个完整的正则表达式。这是一个“simple glob”,它只支持正则表达式可以做的一小部分。

1

我有同样的问题,我已经达到的最佳解决方案是两个重复相同的数据属性,但略有不同pathPatthern涵盖所有情况。

你的情况:

<data android:scheme="file" android:host="*" android:mimeType="*/*" android:pathPattern=".*\\.ext"/> 
<data android:scheme="file" android:host="*" android:mimeType="*/*" android:pathPattern=".*\\.Ext"/> 
<data android:scheme="file" android:host="*" android:mimeType="*/*" android:pathPattern=".*\\.eXt"/> 
<data android:scheme="file" android:host="*" android:mimeType="*/*" android:pathPattern=".*\\.exT"/> 
<data android:scheme="file" android:host="*" android:mimeType="*/*" android:pathPattern=".*\\.EXt"/> 
<data android:scheme="file" android:host="*" android:mimeType="*/*" android:pathPattern=".*\\.eXT"/> 
<data android:scheme="file" android:host="*" android:mimeType="*/*" android:pathPattern=".*\\.ExT"/> 
<data android:scheme="file" android:host="*" android:mimeType="*/*" android:pathPattern=".*\\.EXT"/> 
+0

这mime类型将打开设备上的每一个文件。 ** pathPattern **在这里什么都不会做。 – 2017-10-23 20:15:23

相关问题