Merge "Slot Change Receiver Migration" into sc-dev

This commit is contained in:
Jiashen Wang
2021-02-01 23:57:09 +00:00
committed by Android (Google) Code Review
17 changed files with 936 additions and 22 deletions

View File

@@ -24,15 +24,18 @@ import static com.android.internal.util.CollectionUtils.emptyIfNull;
import android.annotation.Nullable;
import android.content.Context;
import android.os.ParcelUuid;
import android.telephony.PhoneNumberUtils;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.telephony.UiccCardInfo;
import android.telephony.UiccSlotInfo;
import android.text.TextUtils;
import android.util.Log;
import androidx.annotation.VisibleForTesting;
import com.android.internal.telephony.MccTable;
import com.android.settings.network.telephony.DeleteEuiccSubscriptionDialogActivity;
import com.android.settings.network.telephony.ToggleSubscriptionDialogActivity;
import com.android.settingslib.DeviceInfoUtils;
@@ -517,4 +520,64 @@ public class SubscriptionUtil {
.filter(sub -> sub.isEmbedded() && groupUuid.equals(sub.getGroupUuid()))
.collect(Collectors.toList());
}
/** Returns the formatted phone number of a subscription. */
@Nullable
public static String getFormattedPhoneNumber(
Context context, SubscriptionInfo subscriptionInfo) {
if (subscriptionInfo == null) {
Log.e(TAG, "Invalid subscription.");
return null;
}
TelephonyManager telephonyManager = context.getSystemService(TelephonyManager.class);
String rawPhoneNumber =
telephonyManager.getLine1Number(subscriptionInfo.getSubscriptionId());
String countryIso = MccTable.countryCodeForMcc(subscriptionInfo.getMccString());
if (TextUtils.isEmpty(rawPhoneNumber)) {
return null;
}
return PhoneNumberUtils.formatNumber(rawPhoneNumber, countryIso);
}
/**
* Returns the subscription on a removable sim card. The device does not need to be on removable
* slot.
*/
@Nullable
public static SubscriptionInfo getFirstRemovableSubscription(Context context) {
TelephonyManager telephonyManager = context.getSystemService(TelephonyManager.class);
SubscriptionManager subscriptionManager =
context.getSystemService(SubscriptionManager.class);
List<UiccCardInfo> cardInfos = telephonyManager.getUiccCardsInfo();
if (cardInfos == null) {
Log.w(TAG, "UICC cards info list is empty.");
return null;
}
List<SubscriptionInfo> allSubscriptions = subscriptionManager.getAllSubscriptionInfoList();
if (allSubscriptions == null) {
Log.w(TAG, "All subscription info list is empty.");
return null;
}
for (UiccCardInfo cardInfo : cardInfos) {
if (cardInfo == null) {
Log.w(TAG, "Got null card.");
continue;
}
if (!cardInfo.isRemovable()
|| cardInfo.getCardId() == TelephonyManager.UNSUPPORTED_CARD_ID) {
Log.i(TAG, "Skip embedded card or invalid cardId on slot: "
+ cardInfo.getSlotIndex());
continue;
}
Log.i(TAG, "Target removable cardId :" + cardInfo.getCardId());
for (SubscriptionInfo subInfo : allSubscriptions) {
// Match the removable card id with subscription card id.
if (cardInfo.getCardId() == subInfo.getCardId()) {
return subInfo;
}
}
}
return null;
}
}

View File

@@ -177,10 +177,7 @@ public class ToggleSubscriptionDialogActivity extends SubscriptionActionDialogAc
showRebootConfirmDialog();
return;
}
Log.i(
TAG,
"Enabling DSDS without rebooting. "
+ getString(R.string.sim_action_enabling_sim_without_carrier_name));
Log.i(TAG, "Enabling DSDS without rebooting.");
showProgressDialog(
getString(R.string.sim_action_enabling_sim_without_carrier_name));
mEnableMultiSimSidecar.run(NUM_OF_SIMS_FOR_DSDS);
@@ -272,7 +269,7 @@ public class ToggleSubscriptionDialogActivity extends SubscriptionActionDialogAc
case SidecarFragment.State.ERROR:
mEnableMultiSimSidecar.reset();
Log.i(TAG, "Failed to switch to DSDS without rebooting.");
ProgressDialogFragment.dismiss(getFragmentManager());
dismissProgressDialog();
showErrorDialog(
getString(R.string.dsds_activation_failure_title),
getString(R.string.dsds_activation_failure_body_msg2));
@@ -290,7 +287,7 @@ public class ToggleSubscriptionDialogActivity extends SubscriptionActionDialogAc
Log.i(TAG, "DSDS enabled, start to enable pSIM profile.");
handleTogglePsimAction();
ProgressDialogFragment.dismiss(getFragmentManager());
dismissProgressDialog();
finish();
}