gpt4 book ai didi

android - 具有文件方案和 pathPattern 的 Intent 过滤器错误地评估为真

转载 作者:行者123 更新时间:2023-11-29 14:00:47 26 4
gpt4 key购买 nike

我正在使用下面的 Intent 过滤器将 Activity 与"file"方案的三种自定义扩展名相关联:.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 应用程序一起使用时,此 Intent 过滤器会将 Activity 与几乎任何扩展相关联。例如:当打开扩展名为 *.mpb、*.adu 以及更多扩展名的文件时,Dropbox 应用会启动关联的 Activity ,尽管在 Intent 过滤器中上述任何路径模式的文件名都不匹配。 Intent 过滤器似乎错误地评估为真。

知道是什么原因造成的吗?如何避免与不适合我的 Activity 的文件相关联?

将 android:host="*"添加到每个数据部分后,行为确实发生了变化。该 Activity 不再与所有扩展关联。但是,现在它并不总是被评估为匹配。例如这个 Uri 不匹配file:///mnt/sdcard/Android/data/com.dropbox.android/files/scratch/Bright%20Orange%20Levels.smmstyle

尽管从同一个 drobox 应用程序打开的另一个具有相同扩展名的文件匹配正常。这发生在运行 android 2.2 的 Galaxy GT-I9000 和运行 android 3.2 的 Archos 80 G9 上所以:好多了,但还不完美。将进一步研究。

最佳答案

Android在进行intent和intent-filter的匹配测试时,只会将Intent对象中的URI和数据类型与filter中指定的URI和数据类型进行比较。可以看详细解释here .

关于android - 具有文件方案和 pathPattern 的 Intent 过滤器错误地评估为真,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9565566/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com