You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Delphi开发的Android(三星)应用中使用OpenDialog加载播放列表?

针对三星手机上OpenDialog.execute无法执行的解决方案

Hey Johnny, 我之前开发音频类应用时也在三星设备上踩过类似的文件选择坑,给你几个实测有效的解决思路:

  • 适配Android权限与存储机制
    三星在Android 10及以上版本的Scoped Storage管控格外严格,传统的OpenDialog.execute可能没适配这套新机制。你需要确认:

    • 已在Manifest中声明READ_EXTERNAL_STORAGE(Android 12及以下)或READ_MEDIA_AUDIO(Android 13+)权限
    • 动态申请权限时,引导用户授予文件访问权限
    • 尽量通过MediaStore API获取音频文件,而非直接操作文件路径
  • 替换为官方推荐的文件选择Intent
    放弃旧的OpenDialog,改用Android系统原生的文件选择Intent,兼容性在三星设备上会好很多:

    val intent = Intent(Intent.ACTION_OPEN_DOCUMENT).apply {
        addCategory(Intent.CATEGORY_OPENABLE)
        type = "audio/*"
        // 可选:允许选择多个文件
        putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true)
    }
    startActivityForResult(intent, REQUEST_PICK_AUDIO_FILES)
    

    如果你用的是Jetpack组件,建议用Activity Result API来处理返回结果,比onActivityResult更可靠。

  • 排查三星系统的特殊限制
    部分三星机型会通过自带的安全中心限制第三方APP的文件访问,你可以:

    • 引导用户检查APP的「文件访问权限」是否完全开启
    • 测试选择单个音频文件 vs 选择整个文件夹,看是否有差异
    • 避免访问三星设备的私有目录(比如某些加密存储区域)
  • 尝试成熟的第三方文件选择库
    如果自己适配太耗时,可以用已经做过机型适配的第三方库,比如Material File Picker,这类库已经处理了包括三星在内的各种机型兼容性问题。

如果还有具体的错误日志或者代码片段,贴出来可以帮你更精准地定位问题~

内容的提问来源于stack exchange,提问作者Johnny

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:09:51