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

Xamarin调用PhoneDialer.Open崩溃,无法从Firebase Realtime Database取号码

解决调用PhoneDialer.Open时应用崩溃的问题

问题根源

你在CallTap_Tapped方法里错误地新建了一个空的TaxiSlovenskoModel实例,这个对象的Tel属性是null,直接传给PhoneDialer.Open()会触发空引用异常,导致应用崩溃。而你已经通过CommandParameter="{Binding Tel}"把正确的电话号码传递过来了,却没使用这个参数。

修复方案

1. 正确获取绑定的电话号码

修改CallTap_Tapped方法,从事件参数中取出CommandParameter里的有效号码:

public void CallTap_Tapped(object sender, EventArgs e)
{
    // 从点击事件参数中提取绑定的电话号码
    if (e is TappedEventArgs tappedArgs && tappedArgs.Parameter is string telTaxi)
    {
        // 校验号码有效性,避免空值调用
        if (!string.IsNullOrWhiteSpace(telTaxi))
        {
            PhoneDialer.Open(telTaxi);
        }
    }
}

2. 配置平台拨号权限

不同平台需要提前配置权限,否则拨号功能可能无法正常工作甚至崩溃:

  • Android:在AndroidManifest.xml中添加权限声明
    <uses-permission android:name="android.permission.CALL_PHONE" />
    
  • iOS:在Info.plist中添加权限说明(iOS 10及以上要求)
    <key>NSPhoneUsageDescription</key>
    <string>需要使用拨号功能联系出租车服务商</string>
    

补充说明

你的XAML布局中CommandParameter="{Binding Tel}"的绑定逻辑是正确的,已经把当前列表项的电话号码传递给了点击事件,只需要在代码中正确接收这个参数即可,无需新建空模型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 20:15:35