Merge "Resolve the SIM call manager per subId" into qt-dev am: 1350309ecc

am: 96af57b47f

Change-Id: I482abff107e8719bf88b5dd3ac92a9b735e0c003
This commit is contained in:
Brad Ebinger
2019-05-10 22:41:59 -07:00
committed by android-build-merger
3 changed files with 16 additions and 12 deletions

View File

@@ -80,12 +80,16 @@ public class MobileNetworkUtils {
}
/**
* Returns true if Wifi calling is enabled for at least one phone.
* Returns true if Wifi calling is enabled for at least one subscription.
*/
public static boolean isWifiCallingEnabled(Context context) {
int phoneCount = context.getSystemService(TelephonyManager.class).getPhoneCount();
for (int i = 0; i < phoneCount; i++) {
if (isWifiCallingEnabled(context, i)) {
SubscriptionManager subManager = context.getSystemService(SubscriptionManager.class);
if (subManager == null) {
Log.e(TAG, "isWifiCallingEnabled: couldn't get system service.");
return false;
}
for (int subId : subManager.getActiveSubscriptionIdList()) {
if (isWifiCallingEnabled(context, subId)) {
return true;
}
}
@@ -93,11 +97,12 @@ public class MobileNetworkUtils {
}
/**
* Returns true if Wifi calling is enabled for the specific phone with id {@code phoneId}.
* Returns true if Wifi calling is enabled for the specific subscription with id {@code subId}.
*/
public static boolean isWifiCallingEnabled(Context context, int phoneId) {
public static boolean isWifiCallingEnabled(Context context, int subId) {
final PhoneAccountHandle simCallManager =
TelecomManager.from(context).getSimCallManager();
TelecomManager.from(context).getSimCallManagerForSubscription(subId);
final int phoneId = SubscriptionManager.getSlotIndex(subId);
boolean isWifiCallingEnabled;
if (simCallManager != null) {

View File

@@ -63,8 +63,7 @@ public class VideoCallingPreferenceController extends TelephonyTogglePreferenceC
@Override
public int getAvailabilityStatus(int subId) {
return subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID
&& MobileNetworkUtils.isWifiCallingEnabled(mContext,
SubscriptionManager.getPhoneId(subId))
&& MobileNetworkUtils.isWifiCallingEnabled(mContext, subId)
&& isVideoCallEnabled(subId)
? AVAILABLE
: CONDITIONALLY_UNAVAILABLE;

View File

@@ -68,7 +68,6 @@ public class WifiCallingPreferenceController extends TelephonyBasePreferenceCont
super(context, key);
mCarrierConfigManager = context.getSystemService(CarrierConfigManager.class);
mTelephonyManager = context.getSystemService(TelephonyManager.class);
mSimCallManager = context.getSystemService(TelecomManager.class).getSimCallManager();
mPhoneStateListener = new PhoneCallStateListener(Looper.getMainLooper());
mEditableWfcRoamingMode = true;
mUseWfcHomeModeForRoaming = false;
@@ -77,8 +76,7 @@ public class WifiCallingPreferenceController extends TelephonyBasePreferenceCont
@Override
public int getAvailabilityStatus(int subId) {
return subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID
&& MobileNetworkUtils.isWifiCallingEnabled(mContext,
SubscriptionManager.getPhoneId(subId))
&& MobileNetworkUtils.isWifiCallingEnabled(mContext, subId)
? AVAILABLE
: UNSUPPORTED_ON_DEVICE;
}
@@ -155,6 +153,8 @@ public class WifiCallingPreferenceController extends TelephonyBasePreferenceCont
mSubId = subId;
mTelephonyManager = TelephonyManager.from(mContext).createForSubscriptionId(mSubId);
mImsManager = ImsManager.getInstance(mContext, SubscriptionManager.getPhoneId(mSubId));
mSimCallManager = mContext.getSystemService(TelecomManager.class)
.getSimCallManagerForSubscription(mSubId);
if (mCarrierConfigManager != null) {
final PersistableBundle carrierConfig = mCarrierConfigManager.getConfigForSubId(mSubId);
if (carrierConfig != null) {