代码之家  ›  专栏  ›  技术社区  ›  Nostromo

为什么收入号码总是空的?

  •  0
  • Nostromo  · 技术社区  · 7 年前

    我对移动编程和Xamarin或Xamarin.Forms完全陌生。所以我考虑从小处着手,尝试第一个显示来电号码的应用程序(只是为了知道如何将这些信息输入我的应用程序)。

    在网上搜索了很多次,却没有找到合适的答案之后,我至少在有来电的时候能找到断点。

    为此,我创建了一个名为 StateListener 在我的Xamarin.Forms解决方案的Android特定项目中。这个类看起来像:

    public class StateListener : PhoneStateListener
    {
        public override void OnCallStateChanged(CallState state, string incomingNumber)
        {
            base.OnCallStateChanged(state, incomingNumber);
    
            switch (state)
            {
                case CallState.Ringing:
                    break;   // <== set break point here
                case CallState.Offhook:
                    break;
                case CallState.Idle:
                    break;
            }
        }
    }
    

    我在我的 MainActivity OnCreate 方法如下:

    StateListener phoneStateListener = new StateListener();
    TelephonyManager telephonyManager = (TelephonyManager)GetSystemService(Context.TelephonyService);
    telephonyManager.Listen(phoneStateListener, PhoneStateListenerFlags.CallState);
    

    incomingNumber OnCallStateChanged 方法始终为空。

    遵循关于 方法设置所需的 Permission.ReadPhoneState 在清单文件中的权限,但这没有帮助。

    也许你可以?

    2 回复  |  直到 7 年前
        1
  •  1
  •   navylover    7 年前

    作为 doc 说:

    如果应用程序没有读取\u调用\u日志权限或载体 特权(请参见TelephonyManager.hascarierPrivileges()),空 字符串将作为参数传递。

    因此,请检查您的应用程序权限。

        2
  •  1
  •   Nostromo    7 年前

    当我在模拟的Android中给我的应用程序“Phone”权限并重新启动我的应用程序后,我得到了 incomingNumber