Merge "Resolve the SIM call manager per subId" into qt-dev
am: 1350309ecc
Change-Id: I3d5c730efde6c0a8a1ecdba4e70793696ad7a598
This commit is contained in:
@@ -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) {
|
||||
|
@@ -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;
|
||||
|
@@ -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) {
|
||||
|
Reference in New Issue
Block a user