在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();