1

我正在使用下面的代码来获取 Android 设备的 IMEI,

TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);

        IMEI = tm.getDeviceId();

对于具有单个 sim 激活的设备来说很好。如果我们对有两张 sim 卡的设备应用相同的代码,那么我如何获得DeviceID并判断我是否获得了 SIM1 Id 或 SIM2 Id?

4

2 回答 2

2

IMEI 号码应该与手机相关联,而不是与 SIM 卡相关联,因此在双卡设备中,您也应该只有一个 IMEI 号码。

“IMEI 仅用于识别设备” [...] “相反,通过传输存储在 SIM 卡上的 IMSI 号码来识别订户” - 参考:维基百科


编辑:

查看源码,或许能找到一些提示:Source of Settings app

这是“IMEI”部分的片段:

// NOTE "imei" is the "Device ID" since it represents
        // the IMEI in GSM and the MEID in CDMA
        if (mPhone.getPhoneName().equals("CDMA")) {
            setSummaryText(KEY_MEID_NUMBER, mPhone.getMeid());
            setSummaryText(KEY_MIN_NUMBER, mPhone.getCdmaMin());
            if (getResources().getBoolean(R.bool.config_msid_enable)) {
                findPreference(KEY_MIN_NUMBER).setTitle(R.string.status_msid_number);
            }
            setSummaryText(KEY_PRL_VERSION, mPhone.getCdmaPrlVersion());
            removePreferenceFromScreen(KEY_IMEI_SV);

            if (mPhone.getLteOnCdmaMode() == PhoneConstants.LTE_ON_CDMA_TRUE) {
                // Show ICC ID and IMEI for LTE device
                setSummaryText(KEY_ICC_ID, mPhone.getIccSerialNumber());
                setSummaryText(KEY_IMEI, mPhone.getImei());
            } else {
                // device is not GSM/UMTS, do not display GSM/UMTS features
                // check Null in case no specified preference in overlay xml
                removePreferenceFromScreen(KEY_IMEI);
                removePreferenceFromScreen(KEY_ICC_ID);
            }
        } else {
            setSummaryText(KEY_IMEI, mPhone.getDeviceId());

            setSummaryText(KEY_IMEI_SV,
                    ((TelephonyManager) getSystemService(TELEPHONY_SERVICE))
                        .getDeviceSoftwareVersion());

            // device is not CDMA, do not display CDMA features
            // check Null in case no specified preference in overlay xml
            removePreferenceFromScreen(KEY_PRL_VERSION);
            removePreferenceFromScreen(KEY_MEID_NUMBER);
            removePreferenceFromScreen(KEY_MIN_NUMBER);
            removePreferenceFromScreen(KEY_ICC_ID);

            // only show area info when SIM country is Brazil
            if ("br".equals(mTelephonyManager.getSimCountryIso())) {
                mShowLatestAreaInfo = true;
            }
        }
于 2013-06-17T10:34:41.170 回答
0

在双 SIM 卡设备中,每个 SIM 插槽都有两个 IMEI 号码。两者都是静态的。第一个 IMEI 号用于第一个插槽,第二个 IMEI 号用于第二个插槽。

于 2013-06-17T10:42:46.330 回答