首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android电话管理器检测sim

Android电话管理器检测sim
EN

Stack Overflow用户
提问于 2011-02-08 21:45:00
回答 3查看 9.4K关注 0票数 6

我正在开发一个基本上依赖于SIM卡状态的Android自动启动应用程序。当我的应用程序自动启动时,我需要它来检查SIM卡在哪里被更换了。之后,我通过获取共享偏好来比较当前SIM卡和过去的SIM卡。但在获取新SIM卡的值时,该应用程序会返回一个空指针异常。

我想对SIM状态做出反应。

当我收到SIM_STATE_READY状态时,我想从电话管理器获取新的SIM卡状态。

代码语言:javascript
运行
复制
  telMgr = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
     int simState = telMgr.getSimState();
    
     switch (simState) 
    {
        case (TelephonyManager.SIM_STATE_ABSENT):
            System.out.println("*******************************************Sim State absent******************************");
            break;
        case (TelephonyManager.SIM_STATE_NETWORK_LOCKED): 
            System.out.println("*******************************************SIM_STATE_NETWORK_LOCKED******************************"+sim);
            break;
        
        case (TelephonyManager.SIM_STATE_PIN_REQUIRED): 
            System.out.println("*******************************************SIM_STATE_PIN_REQUIRED******************************"+sim);
        break;
        case (TelephonyManager.SIM_STATE_PUK_REQUIRED): 
            System.out.println("*******************************************SIM_STATE_PUK_REQUIRED******************************"+sim);
        break;
        case (TelephonyManager.SIM_STATE_UNKNOWN): 
            System.out.println("*******************************************SIM_STATE_UNKNOWN******************************"+sim);
        break;
        case (TelephonyManager.SIM_STATE_READY): 
        {
    
        }
    break;
    }
    default: break;
    }

我正在做这件事,但不知道如何侦听SIM,当SIM准备就绪时,我想要的状态,以便我可以执行一些代码。当设备启动时,它总是返回"SIM_STATE_UNKNOWN“,并导致程序执行完成。

EN

回答 3

Stack Overflow用户

发布于 2011-11-30 18:47:07

如果您想要对Sim更改做出反应,则需要设置一个侦听器:

代码语言:javascript
运行
复制
final TelephonyManager tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);

    tm.listen(new PhoneStateListener() {
        @Override
        public void onServiceStateChanged(ServiceState serviceState) {
            //Code in here executed on Sim State change
        }

        @Override
        public void onDataConnectionStateChanged(int state) {

        }
票数 3
EN

Stack Overflow用户

发布于 2011-09-23 08:03:44

你会在android模拟器上试用你的应用吗?也许你必须直接在android手机上试用你的应用程序,我认为android模拟器不支持你的应用程序。

票数 1
EN

Stack Overflow用户

发布于 2011-02-08 21:56:17

下面的代码将帮助您获取SIM卡序列号

代码语言:javascript
运行
复制
TelephonyManager mTelephonyMgr =
(TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);

String sSimSerial = mTelephonyMgr.getSimSerialNumber(); 

对Android Manifest文件设置如下权限

android.permission.READ_PHONE_STATE

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

https://stackoverflow.com/questions/4933791

复制
相关文章

相似问题

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