本机临时验证功能, 设置手机为单双卡:
adb shell setprop persist.radio.multisim.config ssss(单卡) dsds(双卡)
修改完不能重启!!!
方法一:
此图为旧版本,现在为:
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值,来确定当前是单卡项目还是多卡项目,返回的是手机所支持的卡槽数量。