Merge "Add disable pSIM option in Settings"

This commit is contained in:
Xiangyu/Malcolm Chen
2019-12-09 22:30:06 +00:00
committed by Android (Google) Code Review
9 changed files with 79 additions and 19 deletions

View File

@@ -117,6 +117,8 @@ public class MobileNetworkListController extends AbstractPreferenceController im
} else {
if (mSubscriptionManager.isActiveSubscriptionId(subId)) {
pref.setSummary(R.string.mobile_network_active_sim);
} else if (SubscriptionUtil.showToggleForPhysicalSim(mSubscriptionManager)) {
pref.setSummary(mContext.getString(R.string.mobile_network_inactive_sim));
} else {
pref.setSummary(mContext.getString(R.string.mobile_network_tap_to_activate,
SubscriptionUtil.getDisplayName(info)));
@@ -124,7 +126,8 @@ public class MobileNetworkListController extends AbstractPreferenceController im
}
pref.setOnPreferenceClickListener(clickedPref -> {
if (!info.isEmbedded() && !mSubscriptionManager.isActiveSubscriptionId(subId)) {
if (!info.isEmbedded() && !mSubscriptionManager.isActiveSubscriptionId(subId)
&& !SubscriptionUtil.showToggleForPhysicalSim(mSubscriptionManager)) {
mSubscriptionManager.setSubscriptionEnabled(subId, true);
} else {
final Intent intent = new Intent(mContext, MobileNetworkActivity.class);

View File

@@ -110,7 +110,8 @@ public class MobileNetworkSummaryController extends AbstractPreferenceController
} else if (subs.size() == 1) {
final SubscriptionInfo info = subs.get(0);
final int subId = info.getSubscriptionId();
if (!info.isEmbedded() && !mSubscriptionManager.isActiveSubscriptionId(subId)) {
if (!info.isEmbedded() && !mSubscriptionManager.isActiveSubscriptionId(subId)
&& !SubscriptionUtil.showToggleForPhysicalSim(mSubscriptionManager)) {
return mContext.getString(R.string.mobile_network_tap_to_activate,
SubscriptionUtil.getDisplayName(info));
} else {
@@ -163,7 +164,8 @@ public class MobileNetworkSummaryController extends AbstractPreferenceController
mPreference.setOnPreferenceClickListener((Preference pref) -> {
final SubscriptionInfo info = subs.get(0);
final int subId = info.getSubscriptionId();
if (!info.isEmbedded() && !mSubscriptionManager.isActiveSubscriptionId(subId)) {
if (!info.isEmbedded() && !mSubscriptionManager.isActiveSubscriptionId(subId)
&& !SubscriptionUtil.showToggleForPhysicalSim(mSubscriptionManager)) {
mSubscriptionManager.setSubscriptionEnabled(subId, true);
} else {
final Intent intent = new Intent(mContext, MobileNetworkActivity.class);

View File

@@ -113,4 +113,11 @@ public class SubscriptionUtil {
}
return "";
}
/**
* Whether Settings should show a "Use SIM" toggle in pSIM detailed page.
*/
public static boolean showToggleForPhysicalSim(SubscriptionManager subMgr) {
return subMgr.canDisablePhysicalSubscription();
}
}

View File

@@ -19,7 +19,6 @@ package com.android.settings.network.telephony;
import android.content.Context;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.network.SubscriptionUtil;
@@ -41,9 +40,11 @@ public class DisableSimFooterPreferenceController extends BasePreferenceControll
if (mSubId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
return CONDITIONALLY_UNAVAILABLE;
}
SubscriptionManager subManager = mContext.getSystemService(SubscriptionManager.class);
for (SubscriptionInfo info : SubscriptionUtil.getAvailableSubscriptions(mContext)) {
if (info.getSubscriptionId() == mSubId) {
if (info.isEmbedded()) {
if (info.isEmbedded() || SubscriptionUtil.showToggleForPhysicalSim(subManager)) {
return CONDITIONALLY_UNAVAILABLE;
}
break;

View File

@@ -99,14 +99,13 @@ public class MobileNetworkSwitchController extends BasePreferenceController impl
}
}
// For eSIM, we always want the toggle. The telephony stack doesn't currently support
// disabling a pSIM directly (b/133379187), so we for now we don't include this on pSIM.
if (subInfo == null || !subInfo.isEmbedded()) {
// For eSIM, we always want the toggle. If telephony stack support disabling a pSIM
// directly, we show the toggle.
if (subInfo == null || (!subInfo.isEmbedded() && !SubscriptionUtil.showToggleForPhysicalSim(
mSubscriptionManager))) {
mSwitchBar.hide();
} else {
mSwitchBar.show();
// TODO b/135222940: re-evaluate whether to use
// mSubscriptionManager#isSubscriptionEnabled
mSwitchBar.setChecked(mSubscriptionManager.isActiveSubId(mSubId));
}
}