我正在尝试获取当前手机的电话号码,并且我已经使用了此代码(我已经在清单中拥有权限):
TelephonyManager mTelephonyMgr;
mTelephonyMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String phoneNumber = mTelephonyMgr.getLine1Number();
我在Android模拟器中尝试了这个代码,它运行正常并给了我一个数字(我猜这是模拟器的电话号码),
然而,当我在手机(galaxy s2)上尝试使用此代码时,它返回一个空字符串。
由于
答案 0 :(得分:1)
getLine1Number()无法保证返回电话号码。它仅在设备中的SIM卡上存有号码时才有效。
您可以转到Settings -> About -> Status
并查看电话号码是否可用来检查是否有。如果不是,那么您的运营商不会将号码保留在SIM卡上
答案 1 :(得分:0)
来源:Reading device phone number throws NULLPointerException
在印度的一些运营商,这个返回的电话号码存储在SIM卡的MSISDN上,而某些运营商没有填写。所以它返回空,尝试使用其他SIM卡。
getLine1Number()
的{{3}}表示如果数字“不可用”,此方法将返回null,但没有说明该数字何时可用。