Андроид, как взять номер телефона? - PullRequest
0 голосов
/ 04 октября 2011

В моем заявлении я написал следующий код, чтобы извлечь номер телефона.Когда я запускаю его в эмуляторе, все нормально, но когда я запускаю его на реальном устройстве, приложение вылетает.что вы предлагаете?Я добавил <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 Ответ

2 голосов
/ 04 октября 2011

getLine1Number() вернет строку номера телефона, если она доступна, и ноль, если она недоступна Так что вы должны проверить на нулевой указатель.

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

Также проверьте длину строки, возвращаемой getLine1Number(). В моем телефоне есть строка "". В этом случае substring() выбросит IndexOutOfBoundsException. Поэтому проверьте длину s также перед вызовом substring ().

...