基于Cordova的混合应用在三星A03上无法显示图片缩略图问题排查
Cordova插件的存储路径适配缺失
从logcat的错误信息Primary directory null not allowed来看,核心问题是应用尝试向content://media/external_primary/file写入照片时,没有指定合法的存储目录(仅允许Download、Documents)。目标SDK升级到32后,Android 11+的Scoped Storage规则生效,而三星A03对存储路径的校验比其他机型更严格。旧版SDK(28/29)处于Scoped Storage的过渡阶段,插件可能采用了未指定目录的存储方式,在三星A03的Android 13环境下直接触发了拦截。三星定制ROM的特殊存储校验
三星对Android系统的定制化程度较高,在Scoped Storage的实现上可能比原生Android或其他品牌机型更严苛。即便其他Android 13设备能兼容未指定目录的存储操作,三星A03的MediaProvider却强制要求必须指定允许的目录类型,而插件在目标SDK 32版本中没有针对这种定制行为做适配。插件更新后的逻辑变更触发问题
你提到问题出在更新插件和目标SDK 32的版本中,说明插件更新后调整了存储路径的处理逻辑,但未覆盖三星机型的特殊场景。旧版插件(对应SDK 28/29)使用的存储方式在三星A03上未被拦截,而新版插件的路径处理逻辑刚好触发了三星ROM的校验机制。权限声明未匹配实际存储操作
虽然添加了READ_MEDIA_IMAGES权限,但问题本质是写入存储时的目录合法性问题,而非读取权限不足。目标SDK 32下,写入公共存储的指定目录需要正确使用MediaStore API或对应权限,插件可能没有正确构造合法的存储路径,导致即便权限配置正确,也因目录不合法被拒绝。
内容的提问来源于stack exchange,提问作者Aqua

