Delphi 11.2安卓平台Phone Dialer功能失效问题求助
Delphi 11.2 安卓拨打电话功能故障解决思路
检查权限配置
安卓6.0+需要运行时权限,安卓10+需明确声明CALL_PHONE权限:- 在
AndroidManifest.xml中确认添加权限声明:<uses-permission android:name="android.permission.CALL_PHONE" /> - 在代码中动态申请权限,示例:
procedure TForm1.RequestPhonePermission; begin if not PermissionsService.IsPermissionGranted(CALL_PHONE) then PermissionsService.RequestPermissions([CALL_PHONE], PermissionResultHandler); end; procedure TForm1.PermissionResultHandler(const APermissions: TArray<string>; const AGrantResults: TArray<TPermissionStatus>); begin if (AGrantResults[0] = TPermissionStatus.Granted) then // 执行拨号操作 end;
- 在
调整目标SDK版本
Delphi 11.2默认目标SDK可能为31+,高版本SDK对权限逻辑有变更,尝试将项目选项中Android->Application的Target SDK Version降至30,重新编译测试。规范拨号代码实现
确保使用官方PhoneDialer组件的标准调用方式,避免旧版Intent写法的兼容性问题:if TPhoneDialer.Default.CanMakePhoneCall then TPhoneDialer.Default.Call('目标电话号码');若无需直接拨号,仅打开拨号界面可改用
ACTION_DIAL(无需CALL_PHONE权限)。安装Delphi官方补丁
Delphi 11.2存在已知的安卓组件bug,前往Embarcadero官网下载并安装对应版本的最新补丁,重点覆盖PhoneDialer相关修复。排查设备ROM兼容性
部分国产定制ROM对权限限制更严格,切换至原生安卓设备测试,排除系统定制导致的功能拦截。分析Logcat崩溃日志
通过Delphi菜单Tools->Android->Logcat连接设备,搜索PhoneDialer、Permission、Crash等关键词,定位具体错误原因(如权限拒绝、组件初始化失败等)。
内容的提问来源于stack exchange,提问作者Dr. T
相关产品推荐
相关产品推荐

