2012-03-05 36 views
2

我使用下面的意圖過濾器與三種自定義擴展的活動「文件」方案聯繫起來:.smmx,.smmstyle和.mm與文件格式和pathPattern意圖過濾錯誤地判斷爲真

<activity blablabla> 
     <intent-filter> 
      <action android:name="android.intent.action.EDIT" /> 
      <action android:name="android.intent.action.VIEW" /> 

      <category android:name="android.intent.category.DEFAULT" /> 

      <data 
       android:host="*" 
       android:mimeType="application/octet-stream" 
       android:pathPattern=".*\\.smmx" 
       android:scheme="file" /> 
     </intent-filter> 
     <intent-filter> 
      <action android:name="android.intent.action.EDIT" /> 
      <action android:name="android.intent.action.VIEW" /> 

      <category android:name="android.intent.category.DEFAULT" /> 

      <data 
       android:host="*" 
       android:mimeType="application/octet-stream" 
       android:pathPattern=".*\\.mm" 
       android:scheme="file" /> 
     </intent-filter> 
     <intent-filter> 
      <action android:name="android.intent.action.EDIT" /> 
      <action android:name="android.intent.action.VIEW" /> 

      <category android:name="android.intent.category.DEFAULT" /> 

      <data 
       android:host="*" 
       android:mimeType="application/octet-stream" 
       android:pathPattern=".*\\.smmstyle" 
       android:scheme="file" /> 
     </intent-filter> 
</activity> 

問題是,當與Dropbox應用程序一起使用時,此意圖過濾器將活動與幾乎任何擴展相關聯。例如:打開擴展名爲* .mpb,* .adu的文件時,Dropbox應用程序啓動相關的活動,但意圖過濾器中的上述pathPatterns文件名中沒有匹配的文件名。 它似乎意圖過濾器錯誤地評估真實。

任何想法可能會導致這種情況,以及如何避免與不適合我的活動的文件關聯?

向每個數據部分添加android:host =「*」後,行爲確實發生了變化。 該活動不再與所有擴展關聯。但是,現在並不總是評估爲匹配。 例如該URI不匹配 文件:///mnt/sdcard/Android/data/com.dropbox.android/files/scratch/Bright%20Orange%20Levels.smmstyle

雖然具有相同擴展名的另一個文件從相同的drobox應用程序打開匹配確定。 這是發生在運行Android 2.2的Galaxy GT-I9000和運行Android 3.2的愛可視80 G9上。所以:好得多,但還不完美。將進一步研究。

+0

嘗試添加'android:host'屬性。 – CommonsWare 2012-03-05 14:23:23

+0

是的,改善了很多行爲,但仍然不完美。看到我上面改變的問題(我不知道這是我應該如何反應?) – 2012-03-06 10:14:05

+0

你有沒有嘗試不同的** android:mimeType **選項? – 2017-10-23 16:19:57

回答

0

當Android執行intent和intent-filter之間的匹配測試時,測試僅將Intent對象中的URI和數據類型與過濾器中指定的URI和數據類型進行比較。 你可以看到詳細的解釋here

+0

是的,我知道文檔,但這沒有幫助。 – 2013-04-12 08:07:55