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

Delphi 11.2安卓平台Phone Dialer功能失效问题求助

Delphi 11.2 安卓拨打电话功能故障解决思路
  • 检查权限配置
    安卓6.0+需要运行时权限,安卓10+需明确声明CALL_PHONE权限:

    1. 在AndroidManifest.xml中确认添加权限声明:
      <uses-permission android:name="android.permission.CALL_PHONE" />
      
    2. 在代码中动态申请权限,示例:
      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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 22:55:33