getLine1Number()无法正常工作

8
我想在安卓设备上获取SIM卡号码,但是当我获取到号码时,长度为零!以下是代码:

TelephonyManager mTelephonyMgr = (TelephonyManager) getSystemService(getApplicationContext().TELEPHONY_SERVICE);
String s=mTelephonyMgr.getLine1Number();
Toast.makeText(getBaseContext(), "The length is "+s.length(), Toast.LENGTH_LONG).show();

但是它会弹出 "长度为零" 的提示。当我打印这个数字时,什么也不会显示。 有人能给我一个解决方案吗?


你是否插入了SIM卡或者正在模拟器中测试? - Lucifer
有些SIM卡就是不提供那些信息。 - Vladimir
在模拟器上没问题,但在我的手机上不行。 - Khalid Taha
getLine1Number() 返回 SIM 卡上的电话号码。有时电话号码在 SIM 卡上,有时不在。而且有时候它是错误的。获取用户电话号码的唯一可靠方法是询问用户。 - David Wasser
2个回答

5
获取SIM卡号
 TelephonyManager telemamanger = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
    String getSimSerialNumber = telemamanger.getSimSerialNumber();

获取电话号码
TelephonyManager tMgr =(TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE);
  mPhoneNumber = tMgr.getLine1Number();

这将展示是否适用,否则显示这个


它没显示我的电话号码 -_- - Khalid Taha
你想要SIM卡还是电话号码? - Chintan Khetiya
我需要电话号码。 - Khalid Taha

1

伙计,这也发生在我身上,最后我知道了这个解决方案


我也遇到过这个问题,它高度依赖于SIM卡和设备。你不能保证Android能够提供设备的电话号码。 - Guykun

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接