[Settings] Only display backup calling when more than 1 SIM
Backup calling only available when more than 1 SIM available. Bug: 179802059 Test: on device Change-Id: I24e5eb9e1a7064c3ea65389fbb00c0ff2a5852ed
This commit is contained in:
@@ -70,6 +70,9 @@ public class SubscriptionUtil {
|
|||||||
if (sActiveResultsForTesting != null) {
|
if (sActiveResultsForTesting != null) {
|
||||||
return sActiveResultsForTesting;
|
return sActiveResultsForTesting;
|
||||||
}
|
}
|
||||||
|
if (manager == null) {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
final List<SubscriptionInfo> subscriptions = manager.getActiveSubscriptionInfoList();
|
final List<SubscriptionInfo> subscriptions = manager.getActiveSubscriptionInfoList();
|
||||||
if (subscriptions == null) {
|
if (subscriptions == null) {
|
||||||
return new ArrayList<>();
|
return new ArrayList<>();
|
||||||
|
@@ -32,6 +32,7 @@ import androidx.preference.SwitchPreference;
|
|||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.network.SubscriptionUtil;
|
import com.android.settings.network.SubscriptionUtil;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -67,14 +68,22 @@ public class BackupCallingPreferenceController extends TelephonyTogglePreference
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getAvailabilityStatus(int subId) {
|
public int getAvailabilityStatus(int subId) {
|
||||||
return hasBackupCallingFeature(subId) ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
|
if (!hasBackupCallingFeature(subId)) {
|
||||||
|
return CONDITIONALLY_UNAVAILABLE;
|
||||||
|
}
|
||||||
|
List<SubscriptionInfo> subIdList = getActiveSubscriptionList();
|
||||||
|
SubscriptionInfo subInfo = getSubscriptionInfoFromList(subIdList, subId);
|
||||||
|
if (subInfo == null) { // given subId is not actives
|
||||||
|
return CONDITIONALLY_UNAVAILABLE;
|
||||||
|
}
|
||||||
|
return (subIdList.size() > 1) ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Implementation of abstract methods
|
* Implementation of abstract methods
|
||||||
**/
|
**/
|
||||||
public boolean setChecked(boolean isChecked) {
|
public boolean setChecked(boolean isChecked) {
|
||||||
ImsMmTelManager imsMmTelMgr = getImsMmTelManager();
|
ImsMmTelManager imsMmTelMgr = getImsMmTelManager(mSubId);
|
||||||
if (imsMmTelMgr == null) {
|
if (imsMmTelMgr == null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -92,7 +101,7 @@ public class BackupCallingPreferenceController extends TelephonyTogglePreference
|
|||||||
* Implementation of abstract methods
|
* Implementation of abstract methods
|
||||||
**/
|
**/
|
||||||
public boolean isChecked() {
|
public boolean isChecked() {
|
||||||
ImsMmTelManager imsMmTelMgr = getImsMmTelManager();
|
ImsMmTelManager imsMmTelMgr = getImsMmTelManager(mSubId);
|
||||||
if (imsMmTelMgr == null) {
|
if (imsMmTelMgr == null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -110,16 +119,17 @@ public class BackupCallingPreferenceController extends TelephonyTogglePreference
|
|||||||
if ((preference == null) || (!(preference instanceof SwitchPreference))) {
|
if ((preference == null) || (!(preference instanceof SwitchPreference))) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
SubscriptionInfo subInfo = getSubscriptionInfoFromActiveList(mSubId);
|
||||||
|
|
||||||
mPreference = preference;
|
mPreference = preference;
|
||||||
|
|
||||||
final SwitchPreference switchPreference = (SwitchPreference) preference;
|
final SwitchPreference switchPreference = (SwitchPreference) preference;
|
||||||
switchPreference.setChecked(isChecked());
|
switchPreference.setChecked((subInfo != null) ? isChecked() : false);
|
||||||
|
|
||||||
updateSummary(getLatestSummary());
|
updateSummary(getLatestSummary(subInfo));
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getLatestSummary() {
|
private String getLatestSummary(SubscriptionInfo subInfo) {
|
||||||
SubscriptionInfo subInfo = getSubscriptionInfo();
|
|
||||||
return Objects.toString((subInfo == null) ? null
|
return Objects.toString((subInfo == null) ? null
|
||||||
: SubscriptionUtil.getUniqueSubscriptionDisplayName(subInfo, mContext), "");
|
: SubscriptionUtil.getUniqueSubscriptionDisplayName(subInfo, mContext), "");
|
||||||
}
|
}
|
||||||
@@ -144,19 +154,34 @@ public class BackupCallingPreferenceController extends TelephonyTogglePreference
|
|||||||
CarrierConfigManager.KEY_CARRIER_CROSS_SIM_IMS_AVAILABLE_BOOL, false);
|
CarrierConfigManager.KEY_CARRIER_CROSS_SIM_IMS_AVAILABLE_BOOL, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
private ImsMmTelManager getImsMmTelManager() {
|
private ImsMmTelManager getImsMmTelManager(int subId) {
|
||||||
if (!SubscriptionManager.isUsableSubscriptionId(mSubId)) {
|
if (!SubscriptionManager.isUsableSubscriptionId(subId)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
ImsManager imsMgr = mContext.getSystemService(ImsManager.class);
|
ImsManager imsMgr = mContext.getSystemService(ImsManager.class);
|
||||||
return (imsMgr == null) ? null : imsMgr.getImsMmTelManager(mSubId);
|
return (imsMgr == null) ? null : imsMgr.getImsMmTelManager(subId);
|
||||||
}
|
}
|
||||||
|
|
||||||
private SubscriptionInfo getSubscriptionInfo() {
|
private List<SubscriptionInfo> getActiveSubscriptionList() {
|
||||||
SubscriptionManager subInfoMgr = mContext.getSystemService(SubscriptionManager.class);
|
SubscriptionManager subscriptionManager =
|
||||||
if (subInfoMgr == null) {
|
mContext.getSystemService(SubscriptionManager.class);
|
||||||
|
return SubscriptionUtil.getActiveSubscriptions(subscriptionManager);
|
||||||
|
}
|
||||||
|
|
||||||
|
private SubscriptionInfo getSubscriptionInfoFromList(
|
||||||
|
List<SubscriptionInfo> subInfoList, int subId) {
|
||||||
|
for (SubscriptionInfo subInfo : subInfoList) {
|
||||||
|
if ((subInfo != null) && (subInfo.getSubscriptionId() == subId)) {
|
||||||
|
return subInfo;
|
||||||
|
}
|
||||||
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return subInfoMgr.getActiveSubscriptionInfo(mSubId);
|
|
||||||
|
private SubscriptionInfo getSubscriptionInfoFromActiveList(int subId) {
|
||||||
|
if (!SubscriptionManager.isUsableSubscriptionId(subId)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return getSubscriptionInfoFromList(getActiveSubscriptionList(), subId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user