HarmonyOS鸿蒙Next中文件管理器音频文件选择问题:设置type为audio为何pptx文件也能弹出应用?
HarmonyOS鸿蒙Next中文件管理器音频文件选择问题:设置type为audio为何pptx文件也能弹出应用? 我想文件管理器或者其它APP的音频文件选择在其它应用打开可以看到我们得应用,我设置了文件的type只有audio,为什么我长按pptx文件 在其它应用打开,也可以弹出来看到我们得应用呢?
分享功能是正常的,其他应用打开功能是不正常的。
下面这个是我的配置,我的需求是【分享】功能只有音频文件可以通过我们应用打开,【其他应用打开】功能也只有音频文件的打开方式才有我们的应用。
"skills": [
{
"entities": [
"entity.system.home"
],
"actions": [
"action.system.home",
"ohos.want.action.sendData",
"ohos.want.action.viewData",
],
"uris": [
{
"scheme": "file",
"type": "general.audio",
"linkFeature": "FileOpen"
},
{
"scheme": "file",
"utd": "general.audio",
"maxFileSupported": 1
},
]
},
]
更多关于HarmonyOS鸿蒙Next中文件管理器音频文件选择问题:设置type为audio为何pptx文件也能弹出应用?的实战教程也可以访问 https://www.itying.com/category-93-b0.html
开发者您好,根据您的配置信息,应该是多个actions放在一起导致的配置冲突。
可以将分享的actions"ohos.want.action.sendData"和拉起应用的actions"ohos.want.action.viewData"独立开来,避免互相干扰。
"skills": [
{
"entities": [
"entity.system.home"
],
"actions": [
"action.system.home",
"ohos.want.action.viewData",
],
"uris": [
{
"scheme": "file",
"type": "general.audio",
"linkFeature": "FileOpen"
}
]
},
{
"actions": [
"ohos.want.action.sendData",
],
"uris": [
{
"scheme": "file",
"utd": "general.audio",
"maxFileSupported": 1
},
]
}
]
更多关于HarmonyOS鸿蒙Next中文件管理器音频文件选择问题:设置type为audio为何pptx文件也能弹出应用?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
学习了
在 HarmonyOS Next 中,文件选择器 type 设为 audio 时,系统主要依据文件扩展名或 MIME 类型进行过滤。pptx 文件弹出应用,可能是因为其 MIME 类型被错误关联(如部分系统将 .pptx 内部嵌的音频识别为容器),或文件选择器未严格校验实际内容,导致过滤逻辑失效。该行为属系统文件类型识别机制的兼容性问题。
其他应用打开长按菜单,是通过URIS数组里第二项匹配到的。
分享正常是因为只匹配严格type(第一项);而“其它”打开场景,系统会匹配utd(统一数据类型),你配置的第二项只写了utd: general.audio却没写type,这会让系统对所有文件后缀都尝试匹配一次你的应用。
utd值的匹配范围比MIME type更宽,是按UTD别名体系去比较的,general.audio这个别名很可能在你的环境中把pptx对应的UTD也涵盖了进去。
解决办法:把第二项也加上type字段约束,或者把第一项的linkFeature补到分享那项,去掉只含utd的第二项。
例如只保留:
{
"scheme": "file",
"type": "general.audio",
"linkFeature": "FileOpen"
}
这样FileOpen覆盖“其他应用打开”,而“分享”的ohos.want.action.sendData本身就会走type过滤。

