我目前正在开发一个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插槽。
我错过了什么吗?我会尽快在另一台设备上测试它,但目前无法实现。
感谢您的帮助!
答案 0 :(得分:0)
所以,正如Emad在我的问题评论中所说:
我很久以前尝试使用原生的android程序,并且显示许多运营商不提供此信息。特别是在伊朗,没有活跃的运营商这样做。我听说它甚至是非法的!这就是为什么像Telegram和Viber这样的应用会询问您的号码。
因此,经过多次研究后,如果不问用户,确实无法获得电话号码。
希望它有所帮助!