<span style="font-size:18px;">public static Intent getDualSimCallIntent(String number, int simIndex) {
return getDualSimCallIntent(number, simIndex, null);
}
public static Intent getDualSimCallIntent(String number, int simIndex, String callOrigin) {
Uri uri = Uri.fromParts(SCHEME_TEL, number, null);
return getDualSimCallIntent(uri, simIndex, callOrigin);
}
public static Intent getDualSimCallIntent(Uri uri, int simIndex, String callOrigin) {
final Intent intent = new Intent(DualSimConstants.ACTION_DUAL_SIM_CALL, uri);
intent.putExtra(DualSimConstants.EXTRA_DSDS_CALL_POLICY, getSlotExtra(simIndex));
if (!TextUtils.isEmpty(callOrigin)) {
intent.putExtra(PhoneConstants.EXTRA_CALL_ORIGIN, callOrigin);
}
return intent;
}</span>
上面的这段代码中
首先构建 Uri uri = Uri.fromParts(SCHEME_TEL, number, null);
然后构建final Intent intent = new Intent(DualSimConstants.ACTION_DUAL_SIM_CALL, uri);
然后选择sim卡intent.putExtra(DualSimConstants.EXTRA_DSDS_CALL_POLICY, getSlotExtra(simIndex));
查找这个public static Intent getDualSimCallIntent(String number, int simIndex)被调用的地方
<span style="font-size:18px;"> if (mHasPhone) {
if (CallUtil.isDualSimSupported()) {
phoneIntent = CallUtil.getDualSimCallIntent(entry.data,
DualSimConstants.DSDS_SLOT_1_ID);
phone2Intent = CallUtil.getDualSimCallIntent(entry.data,
DualSimConstants.DSDS_SLOT_2_ID);
} else {
phoneIntent = CallUtil.getCallIntent(entry.data);
}
}</span>
<span style="font-size:18px;"> if (mHasPhone && mHasSms) {
entry.intent = phoneIntent;
entry.primary2Intent = phone2Intent;
entry.secondaryIntent = smsIntent;
entry.secondaryActionIcon = kind.iconAltRes;
entry.secondaryActionDescription = kind.iconAltDescriptionRes;
} else if (mHasPhone) {
entry.intent = phoneIntent;
entry.primary2Intent = phone2Intent;
} else if (mHasSms) {
entry.intent = smsIntent;
} else {
entry.intent = null;
}
</span>
然后发出intent
<span style="font-size:18px;"> if (index != -1) {
final DetailViewEntry entry = (DetailViewEntry) mAdapter.getItem(index);
if (entry != null && entry.intent != null &&
entry.intent.getAction() == Intent.ACTION_CALL_PRIVILEGED) {
mContext.startActivity(entry.intent);
return true;
}
} else if (mPrimaryPhoneUri != null) {
// There isn't anything selected, call the default number
mContext.startActivity(CallUtil.getCallIntent(mPrimaryPhoneUri));
return true;
}</span>