Xamarin.Droid - 获取设备电话号码

时间:2017-03-28 10:39:22

标签: c# xamarin mvvm xamarin.android cross-platform

我目前正在开发一个Xamarin表单项目,我需要能够从设备中获取用户的电话号码。它发现在iOS和Windows Phone上不可能这样做,但我仍然希望为Android做到这一点,这就是为什么我在互联网上发现了一段应该在Android上工作的代码。我正在使用MVVM模式。

在我的ViewModel中,我尝试以这种方式获取电话号码:

   string phoneNumber = DependencyService.Get<IPhoneNumber>().GetPhoneNumber();

从这个类中调用此方法:

 public class PhoneNumber : IPhoneNumber
    {
        public string GetPhoneNumber()
        {
            TelephonyManager mTelephonyMgr;    
            mTelephonyMgr = (TelephonyManager)Application.Context.GetSystemService(Context.TelephonyService);    
            return mTelephonyMgr.Line1Number;
        }
    }

当我在Android Emulator上为visual studio运行我的应用程序时,它可以工作,我得到一个由11位数字组成的电话号码。但是当我在真实设备上时,该方法返回一个空字符串(“”)。我在我的AndroidManifest.xml文件中添加了 READ_PHONE_STATE 权限。哦,当然,我的真实设备插有一个SIM卡,它只有一个SIM插槽。

我错过了什么吗?我会尽快在另一台设备上测试它,但目前无法实现。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

所以,正如Emad在我的问题评论中所说:

  

我很久以前尝试使用原生的android程序,并且显示许多运营商不提供此信息。特别是在伊朗,没有活跃的运营商这样做。我听说它甚至是非法的!这就是为什么像Telegram和Viber这样的应用会询问您的号码。

因此,经过多次研究后,如果不问用户,确实无法获得电话号码。

希望它有所帮助!