在android 獲取手機信息的時候用到這樣一段代碼: android
public class BasicInfo { windows
public String getPhoneNumber() 網絡
{ app
// 獲取手機號 MSISDN,極可能爲空 ide
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); 函數
StringBuffer inf = new StringBuffer(); ui
switch(tm.getSimState()){ //getSimState()取得sim的狀態 有下面6中狀態 this
case TelephonyManager.SIM_STATE_ABSENT :inf.append("無卡");return inf.toString(); spa
case TelephonyManager.SIM_STATE_UNKNOWN :inf.append("未知狀態");return inf.toString(); .net
case TelephonyManager.SIM_STATE_NETWORK_LOCKED :inf.append("須要NetworkPIN解鎖");return inf.toString();
case TelephonyManager.SIM_STATE_PIN_REQUIRED :inf.append("須要PIN解鎖");return inf.toString();
case TelephonyManager.SIM_STATE_PUK_REQUIRED :inf.append("須要PUK解鎖");return inf.toString();
case TelephonyManager.SIM_STATE_READY :break;
}
String phoneNumber = tm.getLine1Number();
return phoneNumber;
}
在另一個activity類裏面調用的時候 老是出現進程關閉 沒法獲取手機信息。後來發現
getSystemService這個方法基於context,只有存在TextView控件的窗體中這個方法纔會被激活~ |
因而:
1. 給BasicInfo 添加一個帶參數Context的構造函數:
public BasicInfo (Context context)
{
this.context = context;
}
2. getPhoneNumber()函數裏面改爲:
context.getSystemService(Context.TELEPHONY_SERVIC);
3. 在調用類裏面 BasicInfo bi = new BasicInfo(this);
bi.getPhoneNumber();