Xamarin Forms 如何知道当前正在进行通话

Xamarin Forms How to know when a call is currently taking place

我正在为 Xamarin Forms Android 应用程序编写一些代码,该应用程序可以拨打 phone 号码,但如果用户当前正在通话(无论是来电),我不想拨打该号码或外向,这没有什么区别)。我对 phone 状态进行了很多研究,但我找不到我要找的东西,除非我没有正确应用它。我需要的是这样的:

if (NoCurrentCallIsTakingPlace)
{
    var uri = Android.Net.Uri.Parse(string.Format("tel:{0}", PhoneNumber));
    var intent = new Intent(Intent.ActionCall, uri);
    Xamarin.Forms.Forms.Context.StartActivity(CurrentIntent);
}

拨号代码有效,但它是有条件的 statement/code 检查 phone 状态,我遇到了问题。请有人帮忙。如果您需要更多信息,我们深表歉意。请让我知道,我会提供。谢谢。

在本机 android 中,您可以使用电话管理器来检查设备的状态:

它有三种状态:

  • 空闲:空闲时没有来电
  • 摘机:通话中摘机
  • 响铃: 响铃时

        var telephonyManagerService = (TelephonyManager)Xamarin.Forms.Forms.Context.GetSystemService(TelephonyService);
        var getCurrentState = telephonyManagerService?.CallState;
        switch (getCurrentState)
        {
            case CallState.Idle:
              //No call
                break;
            case CallState.Ringing:
              //Ringing 
                break;
            case CallState.Offhook:
              //On call
                break;
            default:
                break;
        }
    

如有疑问请回复