“*#06#”顯示MEID/IMEI的客制化

C2K雙卡項(xiàng)目,在通話界面輸入“*#06#”,當(dāng)有插入電信卡時,會顯示主卡MEID+副卡IMEI;當(dāng)插入移動/聯(lián)通卡,沒有插入電信卡時,會顯示2個IMEI。

若需要總是顯示MEID+2個IMEI 或有電信卡插入時也只顯示2個IMEI,以下是具體辦法。
【在L/M版上】

1、在GSMPhone.java的handlemessage方法switch對應(yīng)的case:EVENT_GET_IMEI_DONE處理過程中,將讀到的mImei保存到SystemProperties中,可以根據(jù)slotId按如下例子的格式設(shè)鍵值(命名可跟公司名相關(guān)聯(lián))。這樣在開機(jī)初始化之后,GSM Modem兩個protocol對應(yīng)的IMEI就都保存到了SystemProperties中,在phone進(jìn)程以及第三方APK中都可以通過SystemProperties獲取到它們。

例如:

if(mPhoneId == PhoneConstants.SIM_ID_1|| mPhoneId = 10) //SIM1
{
    Log.d("abc","is SIM1,IMEI is:"+mImei);
    SystemProperties.set("gsm.mtk.imei1",mImei);
}
else if(mPhoneId == PhoneConstants.SIM_ID_2 || mPhoneId =11) //SIM2
{
    Log.d("abc","is SIM2,IMEI is:"+mImei);
    SystemProperties.set("gsm.mtk.imei2",mImei);
}

2、在CDMAPhone.java的handlemessage方法switch對應(yīng)的case:EVENT_GET_DEVICE_IDENTITY_DONE處理過程中,將讀到的mMeid保存到SystemProperties中,這樣在開機(jī)初始化之后,MEID就都保存到了SystemProperties中,在phone進(jìn)程以及第三方APK中都可以通過SystemProperties獲取到它們。

例如:SystemProperties.set("gsm.mtk.meid",mMeid);

注意:由于插卡或版本差異,可能出現(xiàn)找不到對應(yīng)slot的GSMPhone/CDMAPhone對象的情況,導(dǎo)致無法獲取到對應(yīng)的信息;

M之后的版本(M0.M1除外)
/vendor/mediatek/proprietary/frameworks/base/packages/FwkPlugin/src/com/mediatek/op/telephony/DefaultDeviceInformationExt.java
case EVENT_GET_IMEI_DONE
下面去保存
保存MEID,可以在
case EVENT_GET_DEVICE_IDENTITY_DONE
該處來進(jìn)行保存;

 case EVENT_GET_IMEI_DONE:
                Rlog.d(TAG, "DefaultDeviceInformationExt handleMessage msg = EVENT_GET_IMEI_DONE");
                ar = (AsyncResult) msg.obj;
                if (ar.exception != null) {
                    Rlog.d(TAG, "Null IMEI!!");
                    break;
                }
                mImei[mSlotId] = (String) ar.result;
                Rlog.d(TAG, "IMEI: " + mImei[mSlotId]);
                sendBroadcast();
                break;
            case EVENT_GET_DEVICE_IDENTITY_DONE:
                Rlog.d(TAG, "DefaultDeviceInformationExt " +
                    "handleMessage msg = EVENT_GET_DEVICE_IDENTITY_DONE");
                ar = (AsyncResult) msg.obj;
                if (ar.exception != null) {
                    Rlog.d(TAG, "Null mMeid!! ar.exception = " + ar.exception.toString());
                    break;
                }
                String[] respId = (String[]) ar.result;
                mMeid =  respId[3];
                if (mMeid != null) {
                    mMeid = mMeid.toUpperCase();
                }
                Rlog.d(TAG, "mMeid: " + mMeid);
                sendBroadcast();
                break;

3、最后,就根據(jù)顯示的需要,修改SpecialCharSequenceMgr.java的handleDeviceIdDisplay方法,直接通過SystemProperties可以獲取到1個MEID和2個IMEI號,然后再根據(jù)客制化需求,將其傳到dialog中顯示即可。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容