如何检查Android卡中是否有Sim卡?

Sen*_* Mg 48 android telephonymanager

我需要帮助检查设备是否以编程方式使用SIM卡.请提供示例代码.

Cha*_*ins 112

使用TelephonyManager.

http://developer.android.com/reference/android/telephony/TelephonyManager.html

正如Falmarri所说,你想要使用getPhoneType FIRST,看看你是否在处理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;
            }
Run Code Online (Sandbox Code Playgroud)

编辑:

从API 26(Android O Preview)开始,您可以使用getSimState(int slotIndex)ie 查询SimState以查找单个SIM卡插槽:

int simStateMain = telMgr.getSimState(0);
int simStateSecond = telMgr.getSimState(1);
Run Code Online (Sandbox Code Playgroud)

官方文件

如果你正在使用和更老的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
Run Code Online (Sandbox Code Playgroud)

这是在API 23中添加的 - 文档在这里


Aru*_*mar 12

您可以查看以下代码:

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);

    }
Run Code Online (Sandbox Code Playgroud)