Android 从SIM卡检索电话号码时出错

Android 从SIM卡检索电话号码时出错,android,Android,这是我的密码 TelephonyManager mTelephonyMgr = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE); String sDeviceID = mTelephonyMgr.getDeviceId(); String sSimSerial = mTelephonyMgr.getSimSerialNumber(); String sSimlineNumber

这是我的密码

TelephonyManager mTelephonyMgr =
    (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);

    String sDeviceID = mTelephonyMgr.getDeviceId();
    String sSimSerial = mTelephonyMgr.getSimSerialNumber(); 
String sSimlineNumber = mTelephonyMgr.getLine1Number();
有了这个帮助,我想从他/她的SIM卡中读取用户电话号码,我还在清单文件中添加了
read\u phone\u STATE
权限。Eclipse在我的代码中没有显示任何错误,但最终还是一无所获。我的代码有什么问题吗?

有关此问题的更多信息,请参阅。具体而言,以下是对接受答案的评论:

事实上,不是那么完美。上次我尝试这种方法时,它报告了我的手机最初拥有的电话号码,然后我的旧手机号码就被移植到了它上面。它可能仍然存在,因为设置应用程序仍然显示那个不存在的号码。此外,有报道称一些SIM导致此方法返回null。尽管如此,我还没有找到更好的答案公用软件


似乎获取用户的电话号码并不像要求操作系统交出那么简单,原因超出了开发人员的控制。另一种方法是使用操作系统提供的号码填充您需要的任何字段,但也允许用户编辑电话号码,以防操作系统出错。

并非所有公司都会在SIM卡甚至手机中提供/启用电话号码。在我的galaxy s2中,我甚至在设置菜单中都看不到我的电话号码……在做了一些研究后,我发现电话号码实际上并没有存储在SIM卡中。通过每个SIM卡拥有的唯一密钥从供应商网络检索电话号码。有关此主题的更多讨论,请访问右侧链接的线程。