Android 带有文件方案和路径模式的意图筛选器错误地计算为true
我正在使用下面的意图过滤器将活动与“文件”方案的三种自定义扩展名相关联:.smmx、.smmstyle和.mmAndroid 带有文件方案和路径模式的意图筛选器错误地计算为true,android,intentfilter,Android,Intentfilter,我正在使用下面的意图过滤器将活动与“文件”方案的三种自定义扩展名相关联:.smmx、.smmstyle和.mm <activity blablabla> <intent-filter> <action android:name="android.intent.action.EDIT" /> <action android:name="android.intent.action.VIEW" /
<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应用程序会启动相关的活动,尽管在intent筛选器中上述任何路径模式的文件名都不匹配。
看来意图过滤器的计算结果是错误的
你知道是什么原因导致了这种情况,以及如何避免与不用于我的活动的文件关联吗
在将android:host=“*”添加到每个数据部分后,行为确实发生了变化。
该活动不再与所有扩展关联。但是,现在它的计算结果并不总是匹配的。
例如,此Uri不匹配
file:///mnt/sdcard/Android/data/com.dropbox.android/files/scratch/Bright%20Orange%20Levels.smmstyle
尽管从同一drobox应用程序打开的具有相同扩展名的另一个文件匹配正常。
这在运行安卓2.2的Galaxy GT-I9000和运行安卓3.2的Archos 80 G9上都发生了
所以:好多了,但还不够完美。将进一步研究。当Android在intent和intent筛选器之间执行匹配测试时,的测试仅将intent对象中的URI和数据类型与筛选器中指定的URI和数据类型进行比较。
您可以看到详细说明。当Android在intent和intent筛选器之间执行匹配测试时,的测试仅将intent对象中的URI和数据类型与筛选器中指定的URI和数据类型进行比较。
您可以看到详细的解释。尝试添加
android:host
属性。是的,可以大大改善行为,但仍然不够完美。请参见上面我的更改问题(我不知道这是否是我应该做出的反应?)。请参阅我上面更改的问题(我不知道这是否是我应该做出的反应?)。