2013-02-27 65 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

相關問題