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

React Native 带#的号码链接调用拨号应用仅显示#号如何解决

React Native 带#号号码拨号截断问题解决方案

根因说明

#属于URL保留特殊字符,直接传入tel:协议链接时,会被React Native的Linking组件识别为URL锚点分隔符,导致#后的所有字符被截断,最终拨号界面仅展示#符号。

解决方法

对号码中的所有#字符提前做URL编码,替换为编码值%23后再拼接为拨号链接触发跳转即可。

完整代码示例

import { Linking, Alert } from 'react-native';

// 拨号触发方法
const triggerDial = (rawNumber) => {
  // 替换所有#为编码后的%23
  const encodedNumber = rawNumber.replaceAll('#', '%23');
  const dialLink = `tel:${encodedNumber}`;

  // 校验设备支持拨号后再触发跳转
  Linking.canOpenURL(dialLink)
    .then(isSupport => {
      if (!isSupport) {
        Alert.alert('提示', '当前设备不支持拨号功能');
        return;
      }
      return Linking.openURL(dialLink);
    })
    .catch(err => console.log('拨号调用失败:', err));
}

// 调用示例
triggerDial('#873766');

补充说明

  • 该方案同时兼容iOS、安卓双端
  • 若号码包含*字符无需额外编码,可直接传入
  • 安卓端触发USSD类特殊码(如*#06#)也可使用该方案,编码#后即可正常识别整段号码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 07:18:03