判断单卡/多卡项目,手机所支持的卡槽数量

本机临时验证功能, 设置手机为单双卡:

adb shell setprop persist.radio.multisim.config  ssss(单卡)   dsds(双卡)
 修改完不能重启!!!


方法一:

判断单卡/多卡项目,手机所支持的卡槽数量_第1张图片

此图为旧版本,现在为:                        
persist.radio.multisim.config  

1. SIMCODE 的值为 Dual sim(S2)时. Dual standby mode(Dual SIM functionality), persist.radio.multisim.config会被设定为"dada"或是"dsda".
2. SIMCODE 的值为 Single sim(S1)时, Single standby mode (Single SIM functionality), persist.radio.multisim.config会被设定为"ssss"
3.  三卡时,persist.radio.multisim.config会被设定为"tsts"故可以使用persist.radio.multisim.config判断手机是单卡模式还是双卡模式,


示例:

    import android.os.SystemProperties;

        //+begin, chenhaibing.wt, Single standby mode remove SIM2 ringtone, 20190104
        DefaultRingtonePreference mRingtoneSIM2Preference = (DefaultRingtonePreference)getPreferenceScreen().findPreference(KEY_RINGTONE_SIM2);
        DefaultRingtonePreference mRingtonePreference = (DefaultRingtonePreference)getPreferenceScreen().findPreference(KEY_RINGTONE);
        String mSimConfig =SystemProperties.get("persist.radio.multisim.config");
        if(mSimConfig.equals("ssss")) {
            android.util.Log.d("chenhaibing","Single standby mode (Single SIM functionality) remove SIM2 Ringtone mSimConfig="+mSimConfig);
            getPreferenceScreen().removePreference(mRingtoneSIM2Preference);
            mRingtonePreference.setTitle(R.string.ringtone_title);
        }
        //-end, chenhaibing.wt, Single standby mode remove SIM2 ringtone, 20190104


方法二:

首先在PhoneFactory的makeDefaultPhone方法中,调用了TelephonyManager.getDefault方法

int numPhones = TelephonyManager.getDefault().getPhoneCount();


查看TelephonyManager的getDefault方法

// Leo, 全局变量
    private static TelephonyManager sInstance = new TelephonyManager();
 
    /** @hide
    /* @deprecated - use getSystemService as described above */
    public static TelephonyManager getDefault() {
        return sInstance;
    }


可以看到,就是返回了一个全局TelephonyManager对象

/**
     * Returns the number of phones available.
     * Returns 1 for Single standby mode (Single SIM functionality)
     * Returns 2 for Dual standby mode.(Dual SIM functionality)
     */
    public int getPhoneCount() {
        int phoneCount = 1;
        switch (getMultiSimConfiguration()) {
            case UNKNOWN:
                phoneCount = 1;
                break;
            case DSDS:
            case DSDA:
                phoneCount = PhoneConstants.MAX_PHONE_COUNT_DUAL_SIM;
                break;
            case TSTS:
                phoneCount = PhoneConstants.MAX_PHONE_COUNT_TRI_SIM;
                break;
        }
        return phoneCount;
    }
/**
     * Returns the multi SIM variant
     * Returns DSDS for Dual SIM Dual Standby
     * Returns DSDA for Dual SIM Dual Active
     * Returns TSTS for Triple SIM Triple Standby
     * Returns UNKNOWN for others
     */
    /** {@hide} */
    public MultiSimVariants getMultiSimConfiguration() {
        String mSimConfig =
            SystemProperties.get(TelephonyProperties.PROPERTY_MULTI_SIM_CONFIG);
        if (mSimConfig.equals("dsds")) {
            return MultiSimVariants.DSDS;
        } else if (mSimConfig.equals("dsda")) {
            return MultiSimVariants.DSDA;
        } else if (mSimConfig.equals("tsts")) {
            return MultiSimVariants.TSTS;
        } else {
            return MultiSimVariants.UNKNOWN;
        }
    }


所以,

int numPhones = TelephonyManager.getDefault().getPhoneCount();


这个语句就是根据用户预设定的persist.radio.multisim.config值,来确定当前是单卡项目还是多卡项目,返回的是手机所支持的卡槽数量。

你可能感兴趣的:(AOSP)