当我想获取电话号码时,手机返回NULL

时间:2015-04-23 15:14:08

标签: java android android-permissions

当我想获取电话号码时,有些手机会返回null。在其他手机中,我会收到电话号码。

为什么会这样?

代码:

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

TelephonyManager tMgr = (TelephonyManager)getApplicationContext().getSystemService(Context.TELEPHONY_SERVICE);
String mPhoneNumber = tMgr.getLine1Number();
String test3;
String test2 = "";

if(mPhoneNumber.length() > 10) {
    test3 = "0"+mPhoneNumber.substring(4, 13);
}
else {
    test3 = mPhoneNumber;
}
for(int i = 0; i<test3.length(); i++) {
    if (String.valueOf(test3.charAt(i)).equals("-") || String.valueOf(test3.charAt(i)).equals(" ")) {
    }
    else {
        test2 += String.valueOf(test3.charAt(i));
    }
}

test2不会返回任何内容。

2 个答案:

答案 0 :(得分:1)

并非所有SIM卡都存储电话号码,因此无法在所有手机上检索。

如果您确实需要,可以让用户手动输入(并使用短信确认)。

您可以通过查看Settings -> About Phone -> Status -> My phone number

来查看您的SIM卡是否存储了该号码

答案 1 :(得分:0)

您还需要

<uses-permission android:name="android.permission.READ_CONTACTS" />

此外,它取决于SIM卡。手机可能没有号码。通常,您会获得关于设备&gt;状态&gt;我的电话号码的电话号码。