为什么FMX.TOpenDialog组件在Android系统中无法正常运行?
FMX TOpenDialog 在 Android 端调用Execute无响应/被跳过的常见原因
- 动态权限缺失:Android 6.0及以上版本要求动态申请存储相关权限,仅在清单文件静态声明
READ_EXTERNAL_STORAGE权限无效。调用OpenDialog1.Execute前必须先完成动态权限申请,拿到用户授权后才能正常弹出选择框,未授权时Execute会直接返回false,无任何界面提示。 - 分区存储适配问题:Android 11及以上版本强制启用分区存储规则,旧版Delphi FMX的TOpenDialog未适配该特性,调用时会直接执行失败被跳过。这种场景下需要改用Android原生的
ACTION_OPEN_DOCUMENT意图实现文件选择,替换默认的TOpenDialog组件。 - 调用时机错误:不要在主窗体的
OnCreate生命周期事件中直接调用Execute方法,此时FMX还未完成和Android原生上下文的绑定,会导致弹窗初始化失败。建议放在用户主动触发的交互事件(比如按钮点击事件)或者窗体OnShow事件中调用。 - 组件属性配置异常:如果
Filter属性存在格式错误,或者Options属性中配置了Windows平台专属的参数,会导致Android端组件初始化失败,Execute方法直接跳过执行。
内容的提问来源于stack exchange,提问作者Juan Jimenez
相关产品推荐
相关产品推荐

