我需要帮助检查设备是否有编程的SIM卡。请提供示例代码。如何检查SIM卡是否可用于Android设备?
回答
使用TelephonyManager。
http://developer.android.com/reference/android/telephony/TelephonyManager.html
由于Falmarri笔记,你会想使用getPhoneType首先,就看你甚至处理一个GSM电话。如果你是,那么你也可以获得SIM状态。
TelephonyManager telMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
int simState = telMgr.getSimState();
switch (simState) {
case TelephonyManager.SIM_STATE_ABSENT:
// do something
break;
case TelephonyManager.SIM_STATE_NETWORK_LOCKED:
// do something
break;
case TelephonyManager.SIM_STATE_PIN_REQUIRED:
// do something
break;
case TelephonyManager.SIM_STATE_PUK_REQUIRED:
// do something
break;
case TelephonyManager.SIM_STATE_READY:
// do something
break;
case TelephonyManager.SIM_STATE_UNKNOWN:
// do something
break;
}
编辑:
开始在API 26(的AndroidØ预览),您可以通过使用getSimState(int slotIndex)
查询SIMSTATE个人卡插槽,即:
int simStateMain = telMgr.getSimState(0);
int simStateSecond = telMgr.getSimState(1);
如果你有和年长的API开发时,可以使用TelephonyManager's
String getDeviceId (int slotIndex)
//returns null if device ID is not available. ie. query slotIndex 1 in a single sim device
int devIdSecond = telMgr.getDeviceId(1);
//if(devIdSecond == null)
// no second sim slot available
这是在API中加入23 - 文档here
感谢您的回答,请让我知道如何检查从手机目录输入的电话号码是否有效 – 2010-10-21 09:23:11
这对于双SIM设备如何工作? – gonzobrains 2013-05-02 22:52:16
你可以用下面的代码检查:
public static boolean isSimSupport(Context context)
{
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); //gets the current TelephonyManager
return !(tm.getSimState() == TelephonyManager.SIM_STATE_ABSENT);
}
找到了另一种方法来做到这一点。
public static boolean isSimStateReadyorNotReady() {
int simSlotCount = sSlotCount;
String simStates = SystemProperties.get("gsm.sim.state", "");
if (simStates != null) {
String[] slotState = simStates.split(",");
int simSlot = 0;
while (simSlot < simSlotCount && slotState.length > simSlot) {
String simSlotState = slotState[simSlot];
Log.d("MultiSimUtils", "isSimStateReadyorNotReady() : simSlot = " + simSlot + ", simState = " + simSlotState);
if (simSlotState.equalsIgnoreCase("READY") || simSlotState.equalsIgnoreCase("NOT_READY")) {
return true;
}
simSlot++;
}
}
return false;
}
- 1. 如何检查J2ME设备中是否存在SIM卡?
- 2. 如何检查Android设备中的SIM卡号码
- 3. 检查设备是否有SIM卡模块
- 4. 如何检查Sim卡是否安装在Android设备的两个SIM插槽中?
- 5. 检查移动数据是从SIM卡或SIM卡2 Android
- 6. WinCE MFC检查SIM卡是否存在?
- 7. 检查是否存在SIM卡
- 8. 如何检测设备是否没有使用iphone sdk的SIM卡?
- 9. 如何检查录音是否在Android设备中可用。
- 10. Android:如何检查设备上的闪光灯是否可用?
- 11. 检查SIM卡的网络服务是否可用
- 12. 如何检查android设备是否为Rooted设备?
- 13. 如何检查Android设备是否可以访问互联网?
- 14. 如何检查是否安装了SIM卡
- 15. Android检查是否使用意图RECORD_SOUND_ACTION在设备上可用
- 16. 检查设备是否运行Android 4.3
- 17. 如何在Android中检索SIM卡IMSI?
- 18. 如何在android 3.0中检测SIM卡?
- 19. 检查设备是否可以打印
- 20. 检查Android设备是否有可用的视频功能?
- 21. 检查一个特定的应用程序是否可用于Android设备
- 22. 如何在Android应用程序级别检查SIM卡锁定
- 23. 如何检查MIDI设备是否也是USB设备?
- 24. Android:如何检查Google是否可用?
- 25. 如何检查SIM是否有效或没有在android
- 26. 检测Android设备是否是用java
- 27. 如何获得SIM从Android设备
- 28. React-Native如何检查安装的SIM卡或不在设备中?
- 29. 获取双SIM卡android移动设备上的两个SIM卡插槽的IMEI
- 30. 如何检查Google身份验证器是否可在Android设备上使用?
那些没有SIM卡的CDMA手机呢? – Falmarri 2010-10-20 18:52:18
@Senthil Mg你能告诉我如何知道sim卡是否可以在手机中使用?我的意思是我尝试过使用电话管理器,但我无法得到正确的答案。你能否给我一个简单的例子,以便我能更好地理解。 – anddev 2012-01-24 05:32:17
@Mansi Vora,明确你面对的问题,你是否检查了下面的答案。 – 2012-01-24 06:18:11