我正在开发一款基本上依赖于SIM卡状态的Android自动启动应用程序.当我的应用程序自动启动时,我需要它来检查SIM卡的更改位置.之后,我通过获取共享首选项将当前SIM与过去的SIM进行比较.但是,当获取新SIM卡的值时,应用程序返回空指针异常.
我想对sim状态作出反应.
当我收到SIM_STATE_READY状态时,我想从电话管理器获得新的SIM状态.
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;
}
Run Code Online (Sandbox Code Playgroud)
我这样做但是不知道如何在SIM准备就绪时听SIM我想要的状态,以便我可以执行一些代码.当设备启动时,它总是返回"SIM_STATE_UNKNOWN"并导致程序执行完成.
请帮我实现这个目标.
以下代码将帮助您获取SIM 卡序列号
TelephonyManager mTelephonyMgr =
(TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
String sSimSerial = mTelephonyMgr.getSimSerialNumber();
Run Code Online (Sandbox Code Playgroud)
在 Android Manifest 文件上设置以下权限
android.permission.READ_PHONE_STATE
| 归档时间: |
|
| 查看次数: |
9262 次 |
| 最近记录: |