2017-03-28 110 views
1

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

在我的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模拟器的视觉应用工作室,它工作,我得到一个由11位数组成的电话号码。但是当我在真实的设备上时,该方法返回一个空字符串(“”)。我已将READ_PHONE_STATE权限放在我的AndroidManifest.xml文件中。哦,当然,我的真实设备有一个SIM卡插入,并且它只有一个SIM插槽。

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

感谢您的帮助!

+0

我很久以前就使用原生的android程序试过了,很多运营商都没有提供这些信息。特别是在伊朗,非活跃的经营者会这样做。我听说它甚至是非法的!这就是为什么像Telegram和Viber这样的应用会询问你的号码的原因。 – Emad

+0

哦,我明白了!是的,我想知道为什么像Viber这样的着名应用程序不这样做,我想我现在有了我的答案。所以我会尝试以这种方式预先填写“电话号码”字段,如果我无法获得该号码,用户将不得不手动输入。 谢谢! –

回答

0

所以,伊马德在我的问题的评论说:

我想这个很久以前就已使用原生Android程序和它表明,许多运营商不给这个信息。特别是在伊朗,非活跃的经营者会这样做。我听说它甚至是非法的!这就是为什么像Telegram和Viber这样的应用会询问你的号码的原因。

因此,经过一些更多的研究,确实不可能在没有询问用户的情况下获得电话号码。

希望它有帮助!