设置-关于手机里显示IMEI号和MEID。

原本只有两个imei号,需要再加个显示meid的

override/vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceController.java

这个文件来控制能显示的preference的

首先displayPreference这个方法有个循环

for (int simSlotNumber = 1; simSlotNumber < mTelephonyManager.getPhoneCount();simSlotNumber++) {

因为是支持双卡的手机,所以mTelephonyManager.getPhoneCount()返回的是2,那这个循环体就会显示两个preference,而我们需要加一个显示meid所以,让循环再加一次

simSlotNumber < mTelephonyManager.getPhoneCount() + 1

循环体里设置了每个preference应该显示什么

getTitle(int simSlot)方法里设置preference的标题,我们只需要加个判断当是新加的preference就显示MEID

if (simSlot == 2){

            return mContext.getString(R.string.status_meid_number);

        }

其他的还是源码

return phoneType == PHONE_TYPE_CDMA ? getTitleForCdmaPhone(simSlot)

                : getTitleForGsmPhone(simSlot);

这里直接返回GSM的 return getTitleForGsmPhone(simSlot);

反正都是显示IMEI

然后就是小标题方法getSummary(int simSlot)

同理也是

if (simSlot == 2){

            return mTelephonyManager.getMeid(0);

        }

源码是

return phoneType == PHONE_TYPE_CDMA ? mTelephonyManager.getMeid(simSlot)

                : mTelephonyManager.getImei(simSlot);

意思是如果是CMDA那就返回显示的是MEID,所以原本设计的就是PHONE_TYPE_CDMA的和meid挂钩

这个preference点击后还要进入一个dialog,这里面也需要改

src/com/android/settings/deviceinfo/imei/ImeiInfoDialogController.java

populateImeiInfo这个方法里源码有

if (mTelephonyManager.getPhoneType() == TelephonyManager.PHONE_TYPE_CDMA) {

这个判断改成我们新加的if (mSlotId == 2) {,然后再执行updateDialogForCdmaPhone();

就是显示对话框内容,updateDialogForCdmaPhone这个方法里主要就是mDialog.setText(ID_MEID_NUMBER_VALUE, getMeid());这个显示meid号就行

所以把其他没用的,原本存在的全去掉

//*/tyd.yantao 20220824 remove useless items

        mDialog.removeViewFromScreen(ID_MIN_NUMBER_LABEL);

        mDialog.removeViewFromScreen(ID_MIN_NUMBER_VALUE);

        mDialog.removeViewFromScreen(R.id.prl_version_label);

        mDialog.removeViewFromScreen(ID_PRL_VERSION_VALUE);

        //*/

在getMeid方法里换掉原来的获取meid的方法,改为return mTelephonyManager.getMeid(0);

原来的return mTelephonyManager.getMeid(mSlotId);这个出不来,因为这只有一个MEID

还有个方法isValidSlotIndex,里面返回的还是原来的

return slotIndex >= 0 && slotIndex < telephonyManager.getPhoneCount();

需要改为

return slotIndex >= 0 && slotIndex < telephonyManager.getPhoneCount()+1;

因为加了一个preference了,需要同步,如果不同步那么会影响mTelephonyManager的赋值对象实例化,因为在这个类的构造方法ImeiInfoDialogController中

else if(isValidSlotIndex(slotId, tm)) {

            mTelephonyManager = tm

而这个tm就是上边获得的

TelephonyManager tm = context.getSystemService(TelephonyManager.class);

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Youth King

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值