我的应用程序我已编写以下代码以提取电话号码。当我在模拟器中运行它时,一切都很好但是当我在真实设备上运行它时,应用程序崩溃了。你的建议是什么?我在清单文件中添加了<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);
}
}
答案 0 :(得分:2)
getLine1Number()
将返回电话号码字符串,如果不可用,则返回null。所以你应该检查空指针。
private String getMy10DigitPhoneNumber() {
String s = getMyPhoneNumber();
if(s == null) return "";
else return s.substring(2);
}
同时检查getLine1Number()
返回的字符串的长度。在我的手机中,我收到了""
字符串。在这种情况下,substring()
会抛出IndexOutOfBoundsException
。因此,在调用substring()之前,请检查s
的长度。