我目前正在开发一个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插槽。
我错过了什么吗?我会尝试尽快在另一台设备上测试它,但目前尚不可能。
感谢您的帮助!
我很久以前就使用原生的android程序试过了,很多运营商都没有提供这些信息。特别是在伊朗,非活跃的经营者会这样做。我听说它甚至是非法的!这就是为什么像Telegram和Viber这样的应用会询问你的号码的原因。 – Emad
哦,我明白了!是的,我想知道为什么像Viber这样的着名应用程序不这样做,我想我现在有了我的答案。所以我会尝试以这种方式预先填写“电话号码”字段,如果我无法获得该号码,用户将不得不手动输入。 谢谢! –