使用telephonymanager获取sim序列号
问题描述:
我能够使用telephonymanager获得sim卡的序列号,代码正常工作。但是,如果没有插入SIM卡,它会关闭,那么有什么办法来处理这个异常?使用telephonymanager获取sim序列号
private void getAndSaveCurrentID(View view) {
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
// ---get first time SIM card ID ---
String simID = tm.getSimSerialNumber();
if (simID != null)
Toast.makeText(this, "current SIM card ID: saved " + simID,
Toast.LENGTH_LONG).show();
SharedPreferences preferences = PreferenceManager
.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("Name", simID.toString());
editor.commit();
}
02-14 11:27:42.643: E/AndroidRuntime(9674): FATAL EXCEPTION: main
02-14 11:27:42.643: E/AndroidRuntime(9674): Process: com.air.bgusatm, PID: 9674
02-14 11:27:42.643: E/AndroidRuntime(9674): java.lang.IllegalStateException: Could not find a method getAndSaveCurrentID(View) in the activity class com.air.bgusatm.MainActivity for onClick handler on view class android.widget.Button with id 'button1'
它会工作,如果我围绕它与一个尝试缓存块?
答
String simID = null;
try{
simID = tm.getSimSerialNumber();
}catch(Exception e){
}finally{
if (simID != null)
Toast.makeText(this, "current SIM card ID: saved " + simID,
Toast.LENGTH_LONG).show();
SharedPreferences preferences = PreferenceManager
.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("Name", simID.toString());
editor.commit();
}
答
你在你的按钮,通过view
为参数删除参数,一切都应该工作的onclick方法调用getAndSaveCurrentID(View)
。您的方法getAndSaveCurrentID()
没有任何参数。
private void getAndSaveCurrentID() {
try{
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
// ---get first time SIM card ID ---
String simID = tm.getSimSerialNumber();
if (simID != null)
Toast.makeText(this, "current SIM card ID: saved " + simID,
Toast.LENGTH_LONG).show();
SharedPreferences preferences = PreferenceManager
.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("Name", simID.toString());
editor.commit();
}catch(Exception e){
Log.e("Error","error ocurred");
}
}
希望这有助于
答
您可以检查SIM不存在或不是。
TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
if(telephonyManager.getSimState()!= TelephonyManager.SIM_STATE_ABSENT)
{
//your code here
}
答
这里是我的sollution,它检测是否第一有一个SIM卡,然后调用我的方法,随意编辑我的答案!
public void SimDetectorForGetAndSaveCurrentId(View view) {// save serial
// fire only if there is sim card inserted
TelephonyManager telMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
int simState = telMgr.getSimState();
switch (simState) {
case TelephonyManager.SIM_STATE_ABSENT:
Toast.makeText(getApplicationContext(),
"please make sure you have a SIM card inserted", Toast.LENGTH_LONG)
.show();
break;
case TelephonyManager.SIM_STATE_NETWORK_LOCKED:
getAndSaveCurrentID();
break;
case TelephonyManager.SIM_STATE_PIN_REQUIRED:
getAndSaveCurrentID();
break;
case TelephonyManager.SIM_STATE_PUK_REQUIRED:
getAndSaveCurrentID();
break;
case TelephonyManager.SIM_STATE_READY:
getAndSaveCurrentID();
break;
case TelephonyManager.SIM_STATE_UNKNOWN:
Toast.makeText(getApplicationContext(),
"please make sure you have a SIM card inserted", Toast.LENGTH_LONG)
.show();
break;
}
}
+0
你用这段代码得到了什么异常?请张贴您的logcat或您收到第一张贴:( –
SIMID不能被解析为一个变量 – Felicia
TM解决不了 – Felicia
其投掷空当它不具有SIM卡 – dileep