Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 带有文件方案和路径模式的意图筛选器错误地计算为true_Android_Intentfilter - Fatal编程技术网

Android 带有文件方案和路径模式的意图筛选器错误地计算为true

Android 带有文件方案和路径模式的意图筛选器错误地计算为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" /

我正在使用下面的意图过滤器将活动与“文件”方案的三种自定义扩展名相关联:.smmx、.smmstyle和.mm

<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
属性。是的,可以大大改善行为,但仍然不够完美。请参见上面我的更改问题(我不知道这是否是我应该做出的反应?)。请参阅我上面更改的问题(我不知道这是否是我应该做出的反应?)。