Android,如何取电话号码?

时间:2011-10-04 03:54:20

标签: android phone-number

我的应用程序我已编写以下代码以提取电话号码。当我在模拟器中运行它时,一切都很好但是当我在真实设备上运行它时,应用程序崩溃了。你的建议是什么?我在清单文件中添加了<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

public class TestActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
TextView phoneNumber = (TextView)findViewById(R.id.tvPhoneNumber);
phoneNumber.setText(getMy10DigitPhoneNumber());
}
private String getMyPhoneNumber(){
        TelephonyManager mTelephonyMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); 
        return mTelephonyMgr.getLine1Number();
    }

    private String getMy10DigitPhoneNumber(){
        String s = getMyPhoneNumber();
        return s.substring(2);
    }

}

1 个答案:

答案 0 :(得分:2)

如果可用,

getLine1Number()将返回电话号码字符串,如果不可用,则返回null。所以你应该检查空指针。

private String getMy10DigitPhoneNumber() {
        String s = getMyPhoneNumber();
        if(s == null) return "";
        else return s.substring(2);
}

同时检查getLine1Number()返回的字符串的长度。在我的手机中,我收到了""字符串。在这种情况下,substring()会抛出IndexOutOfBoundsException。因此,在调用substring()之前,请检查s的长度。