首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用telephonymanager获取sim序列

使用telephonymanager获取sim序列
EN

Stack Overflow用户
提问于 2016-02-14 13:55:35
回答 4查看 444关注 0票数 1

我能够得到我的SIM卡的序号使用电话管理器,代码工作良好。但是,如果没有插入SIM卡,它会强制关闭,所以有什么方法可以处理这个异常吗?

代码语言:javascript
复制
    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'

如果我用try缓存块包围它,它会起作用吗?

EN

回答 4

Stack Overflow用户

发布于 2016-02-14 14:11:23

你可以检查SIM卡是否不在。

代码语言:javascript
复制
TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
        if(telephonyManager.getSimState()!= TelephonyManager.SIM_STATE_ABSENT)
        {
            //your code here
        }
票数 1
EN

Stack Overflow用户

发布于 2016-02-14 13:59:13

代码语言:javascript
复制
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();
}
票数 0
EN

Stack Overflow用户

发布于 2016-02-14 14:06:23

您将在按钮的onClick方法中调用getAndSaveCurrentID(View),将view作为参数传递,删除该参数,一切都将正常工作。您的方法getAndSaveCurrentID()没有任何参数。

代码语言:javascript
复制
 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");
    }
}

希望这能有所帮助

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35388840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档