【问题标题】:Xamarin.Droid - Get device phone numberXamarin.Android - 获取设备电话号码
【发布时间】:2017-08-21 09:31:38
【问题描述】:

我目前正在开发一个 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 for Visual Studio 上运行我的应用程序时,它可以工作,我得到一个由 11 位数字组成的电话号码。但是当我在真实设备上时,该方法返回一个空字符串(“”)。我已将 READ_PHONE_STATE 权限放入我的 AndroidManifest.xml 文件中。哦还有,当然,我的真机插了一张 SIM 卡,而且它只有一个 SIM 卡槽。

我错过了什么吗?我会尽快在另一台设备上进行测试,但目前还不可能。

感谢您的帮助!

【问题讨论】:

  • 我很久以前就尝试过使用原生android程序,结果表明许多运营商不提供此信息。特别是在伊朗,没有活跃的运营商这样做。我听说这甚至是非法的!这就是 Telegram 和 Viber 等应用询问您的电话号码的原因。
  • 哦,我明白了!是的,我想知道为什么像 Viber 这样的著名应用程序不这样做,我想我现在已经有了答案。所以我会尝试以这种方式预先填写“电话号码”字段,如果我无法获得号码,用户将不得不手动输入。谢谢!

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


【解决方案1】:

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

我很久以前就尝试过使用原生安卓程序,结果表明许多运营商不提供此信息。特别是在伊朗,没有活跃的运营商这样做。我听说这甚至是非法的!这就是 Telegram 和 Viber 等应用询问您的电话号码的原因。

所以,经过一番研究,确实不可能不询问用户就确定电话号码。

希望对您有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-31
    • 2014-01-27
    • 1970-01-01
    相关资源
    最近更新 更多