我使用下面的意圖過濾器與三種自定義擴展的活動「文件」方案聯繫起來:.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上。所以:好得多,但還不完美。將進一步研究。
嘗試添加'android:host'屬性。 – CommonsWare 2012-03-05 14:23:23
是的,改善了很多行爲,但仍然不完美。看到我上面改變的問題(我不知道這是我應該如何反應?) – 2012-03-06 10:14:05
你有沒有嘗試不同的** android:mimeType **選項? – 2017-10-23 16:19:57