Merge "Remove on/off toggle for physical SIMs" into qt-dev

This commit is contained in:
TreeHugger Robot
2019-06-11 20:06:54 +00:00
committed by Android (Google) Code Review
11 changed files with 261 additions and 29 deletions

View File

@@ -118,14 +118,19 @@ public class MobileNetworkListController extends AbstractPreferenceController im
if (mSubscriptionManager.isActiveSubscriptionId(subId)) {
pref.setSummary(R.string.mobile_network_active_sim);
} else {
pref.setSummary(R.string.mobile_network_inactive_sim);
pref.setSummary(mContext.getString(R.string.mobile_network_tap_to_activate,
SubscriptionUtil.getDisplayName(info)));
}
}
pref.setOnPreferenceClickListener(clickedPref -> {
final Intent intent = new Intent(mContext, MobileNetworkActivity.class);
intent.putExtra(Settings.EXTRA_SUB_ID, info.getSubscriptionId());
mContext.startActivity(intent);
if (!info.isEmbedded() && !mSubscriptionManager.isActiveSubscriptionId(subId)) {
mSubscriptionManager.setSubscriptionEnabled(subId, true);
} else {
final Intent intent = new Intent(mContext, MobileNetworkActivity.class);
intent.putExtra(Settings.EXTRA_SUB_ID, info.getSubscriptionId());
mContext.startActivity(intent);
}
return true;
});
mPreferences.put(subId, pref);

View File

@@ -108,7 +108,14 @@ public class MobileNetworkSummaryController extends AbstractPreferenceController
}
return null;
} else if (subs.size() == 1) {
return subs.get(0).getDisplayName();
final SubscriptionInfo info = subs.get(0);
final int subId = info.getSubscriptionId();
if (!info.isEmbedded() && !mSubscriptionManager.isActiveSubscriptionId(subId)) {
return mContext.getString(R.string.mobile_network_tap_to_activate,
SubscriptionUtil.getDisplayName(info));
} else {
return subs.get(0).getDisplayName();
}
} else {
final int count = subs.size();
return mContext.getResources().getQuantityString(R.plurals.mobile_network_summary_count,
@@ -154,9 +161,15 @@ public class MobileNetworkSummaryController extends AbstractPreferenceController
if (subs.size() == 1) {
mPreference.setOnPreferenceClickListener((Preference pref) -> {
final Intent intent = new Intent(mContext, MobileNetworkActivity.class);
intent.putExtra(Settings.EXTRA_SUB_ID, subs.get(0).getSubscriptionId());
mContext.startActivity(intent);
final SubscriptionInfo info = subs.get(0);
final int subId = info.getSubscriptionId();
if (!info.isEmbedded() && !mSubscriptionManager.isActiveSubscriptionId(subId)) {
mSubscriptionManager.setSubscriptionEnabled(subId, true);
} else {
final Intent intent = new Intent(mContext, MobileNetworkActivity.class);
intent.putExtra(Settings.EXTRA_SUB_ID, subs.get(0).getSubscriptionId());
mContext.startActivity(intent);
}
return true;
});
} else {

View File

@@ -25,12 +25,10 @@ import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.telephony.UiccSlotInfo;
import android.text.TextUtils;
import androidx.annotation.VisibleForTesting;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class SubscriptionUtil {
@@ -107,4 +105,12 @@ public class SubscriptionUtil {
}
return subscriptions;
}
public static String getDisplayName(SubscriptionInfo info) {
final CharSequence name = info.getDisplayName();
if (name != null) {
return name.toString();
}
return "";
}
}

View File

@@ -0,0 +1,54 @@
/*
* Copyright (C) 2019 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
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;
public class DisableSimFooterPreferenceController extends BasePreferenceController {
private int mSubId;
public DisableSimFooterPreferenceController(Context context, String preferenceKey) {
super(context, preferenceKey);
mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
}
public void init(int subId) {
mSubId = subId;
}
@Override
public int getAvailabilityStatus() {
if (mSubId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
return CONDITIONALLY_UNAVAILABLE;
}
for (SubscriptionInfo info : SubscriptionUtil.getAvailableSubscriptions(mContext)) {
if (info.getSubscriptionId() == mSubId) {
if (info.isEmbedded()) {
return CONDITIONALLY_UNAVAILABLE;
}
break;
}
}
return AVAILABLE;
}
}

View File

@@ -142,6 +142,7 @@ public class MobileNetworkSettings extends RestrictedDashboardFragment {
use(DisabledSubscriptionController.class).init(getLifecycle(), mSubId);
use(DeleteSimProfilePreferenceController.class).init(mSubId, this,
REQUEST_CODE_DELETE_SUBSCRIPTION);
use(DisableSimFooterPreferenceController.class).init(mSubId);
}
use(MobileDataPreferenceController.class).init(getFragmentManager(), mSubId);
use(RoamingPreferenceController.class).init(getFragmentManager(), mSubId);

View File

@@ -93,23 +93,23 @@ public class MobileNetworkSwitchController extends BasePreferenceController impl
if (mSwitchBar == null) {
return;
}
final List<SubscriptionInfo> subs = SubscriptionUtil.getAvailableSubscriptions(
mContext);
if (mSubId == SubscriptionManager.INVALID_SUBSCRIPTION_ID ||
mSubscriptionManager.isSubscriptionEnabled(mSubId) && subs.size() < 2) {
mSwitchBar.hide();
return;
}
for (SubscriptionInfo info : subs) {
SubscriptionInfo subInfo = null;
for (SubscriptionInfo info : SubscriptionUtil.getAvailableSubscriptions(mContext)) {
if (info.getSubscriptionId() == mSubId) {
mSwitchBar.show();
mSwitchBar.setChecked(mSubscriptionManager.isSubscriptionEnabled(mSubId));
return;
subInfo = info;
break;
}
}
// This subscription was not found in the available list.
mSwitchBar.hide();
// 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()) {
mSwitchBar.hide();
} else {
mSwitchBar.show();
mSwitchBar.setChecked(mSubscriptionManager.isSubscriptionEnabled(mSubId));
}
}
@Override