本问题已经有最佳答案,请猛点这里访问。
我想获取自己手机的手机号码,以便将此部分添加到我的应用程序中。
我正在搜寻这个问题,
代码在模拟器上是正确的,但在设备中显示为空。
public String getMyPhoneNumber()
{
return ((TelephonyManager) getSystemService(TELEPHONY_SERVICE))
.getLine1Number();
}
和:
但是它返回空值吗? 那么,如何获取电话号码详细信息?
答案来自:以编程方式获取Android手机的电话号码
"无法保证解决此问题,因为电话号码并非物理存储在所有SIM卡上,也不是从网络上广播到电话。在某些需要物理地址验证且仅进行号码分配的国家中尤其如此之后,电话号码分配会在网络上发生-可以更改而无需更改SIM卡或设备(例如,这是支持端口的方式)。
我知道这很痛苦,但是最好的解决方案很可能就是要求用户一次输入他/她的电话号码并存储它。"
您所使用的方法是SDK唯一执行此操作的部分,并且仅在SIM卡上存储了号码的设备上有效,只有某些运营商会这样做。对于所有其他运营商,您将不得不要求用户手动输入电话号码,因为该号码根本没有存储在设备上您可以从中检索到的任何地方。
您的代码应该可以,但是您需要将SIM卡插入手机中。另外,正如autocrat指出的那样,如果数字未存储在SIM卡上,您将得到一个空字符串。
编辑:另外,请检查Pontus Backlund提供的链接,那里有一些很好的信息。
转到设置->关于设备->状态->我的电话号码(如果我的电话号码未知),您将无法获得手机号码..因为某些移动网络不会提供手机号码。
如果我的手机号码有号码,您可以通过以下代码进行移动
TelephonyManager tManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
phoneNumber = tManager.getLine1Number();