Merge "Change default EXTRA_SUPPORTS_VIDEO_CALLING_FALLBACK to true"
diff --git a/src/com/android/phone/CallFeaturesSetting.java b/src/com/android/phone/CallFeaturesSetting.java
index e5527bc..a3b0892 100644
--- a/src/com/android/phone/CallFeaturesSetting.java
+++ b/src/com/android/phone/CallFeaturesSetting.java
@@ -16,24 +16,18 @@
package com.android.phone;
-import android.app.ActionBar;
import android.app.Activity;
-import android.app.ActivityOptions;
import android.app.AlertDialog;
import android.app.Dialog;
-import android.content.ContentResolver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
-import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.ResolveInfo;
import android.os.Bundle;
import android.os.PersistableBundle;
-import android.os.UserHandle;
import android.os.UserManager;
-import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceScreen;
@@ -42,10 +36,9 @@
import android.telecom.PhoneAccountHandle;
import android.telecom.TelecomManager;
import android.telephony.CarrierConfigManager;
-import android.telephony.ims.feature.ImsFeature;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
-import android.text.TextUtils;
+import android.telephony.ims.feature.ImsFeature;
import android.util.Log;
import android.view.MenuItem;
import android.widget.Toast;
@@ -53,18 +46,12 @@
import com.android.ims.ImsConfig;
import com.android.ims.ImsException;
import com.android.ims.ImsManager;
-import com.android.internal.telephony.CallForwardInfo;
import com.android.internal.telephony.Phone;
import com.android.internal.telephony.PhoneConstants;
-import com.android.phone.common.util.SettingsUtil;
-import com.android.phone.settings.AccountSelectionPreference;
import com.android.phone.settings.PhoneAccountSettingsFragment;
import com.android.phone.settings.VoicemailSettingsActivity;
import com.android.phone.settings.fdn.FdnSetting;
-import com.android.services.telephony.sip.SipUtil;
-import java.lang.String;
-import java.util.ArrayList;
import java.util.List;
/**
@@ -144,7 +131,7 @@
if (DBG) log("onPreferenceChange: \"" + preference + "\" changed to \"" + objValue + "\"");
if (preference == mEnableVideoCalling) {
- if (ImsManager.isEnhanced4gLteModeSettingEnabledByUser(mPhone.getContext())) {
+ if (mImsMgr.isEnhanced4gLteModeSettingEnabledByUser()) {
PhoneGlobals.getInstance().phoneMgr.enableVideoCalling((boolean) objValue);
} else {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
@@ -296,13 +283,12 @@
}
}
- if (ImsManager.isVtEnabledByPlatform(mPhone.getContext()) &&
- ImsManager.isVtProvisionedOnDevice(mPhone.getContext()) &&
- (carrierConfig.getBoolean(
+ if (mImsMgr.isVtEnabledByPlatform() && mImsMgr.isVtProvisionedOnDevice()
+ && (carrierConfig.getBoolean(
CarrierConfigManager.KEY_IGNORE_DATA_ENABLED_CHANGED_FOR_VIDEO_CALLS)
- || mPhone.mDcTracker.isDataEnabled())) {
+ || mPhone.mDcTracker.isDataEnabled())) {
boolean currentValue =
- ImsManager.isEnhanced4gLteModeSettingEnabledByUser(mPhone.getContext())
+ mImsMgr.isEnhanced4gLteModeSettingEnabledByUser()
? PhoneGlobals.getInstance().phoneMgr.isVideoCallingEnabled(
getOpPackageName()) : false;
mEnableVideoCalling.setChecked(currentValue);
@@ -311,8 +297,8 @@
prefSet.removePreference(mEnableVideoCalling);
}
- if (ImsManager.isVolteEnabledByPlatform(this) &&
- !carrierConfig.getBoolean(
+ if (mImsMgr.isVolteEnabledByPlatform()
+ && !carrierConfig.getBoolean(
CarrierConfigManager.KEY_CARRIER_VOLTE_TTY_SUPPORTED_BOOL)) {
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
/* tm.listen(mPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE); */
@@ -338,14 +324,13 @@
} else {
prefSet.removePreference(wifiCallingSettings);
}
- } else if (!ImsManager.isWfcEnabledByPlatform(mPhone.getContext()) ||
- !ImsManager.isWfcProvisionedOnDevice(mPhone.getContext())) {
+ } else if (!mImsMgr.isWfcEnabledByPlatform() || !mImsMgr.isWfcProvisionedOnDevice()) {
prefSet.removePreference(wifiCallingSettings);
} else {
int resId = com.android.internal.R.string.wifi_calling_off_summary;
- if (ImsManager.isWfcEnabledByUser(mPhone.getContext())) {
+ if (mImsMgr.isWfcEnabledByUser()) {
boolean isRoaming = telephonyManager.isNetworkRoaming();
- int wfcMode = ImsManager.getWfcMode(mPhone.getContext(), isRoaming);
+ int wfcMode = mImsMgr.getWfcMode(isRoaming);
switch (wfcMode) {
case ImsConfig.WfcModeFeatureValueConstants.WIFI_ONLY:
resId = com.android.internal.R.string.wfc_mode_wifi_only_summary;
diff --git a/src/com/android/phone/ImsUtil.java b/src/com/android/phone/ImsUtil.java
index b6c88ae..4d8ff80 100644
--- a/src/com/android/phone/ImsUtil.java
+++ b/src/com/android/phone/ImsUtil.java
@@ -20,6 +20,7 @@
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.telephony.CarrierConfigManager;
+import android.telephony.SubscriptionManager;
import android.util.Log;
import com.android.ims.ImsConfig;
@@ -52,8 +53,9 @@
* @return {@code true} if WFC is supported by the platform and has been enabled by the user.
*/
public static boolean isWfcEnabled(Context context) {
- boolean isEnabledByPlatform = ImsManager.isWfcEnabledByPlatform(context);
- boolean isEnabledByUser = ImsManager.isWfcEnabledByUser(context);
+ ImsManager imsManager = getDefaultImsManagerInstance(context);
+ boolean isEnabledByPlatform = imsManager.isWfcEnabledByPlatform();
+ boolean isEnabledByUser = imsManager.isWfcEnabledByUser();
if (DBG) Log.d(LOG_TAG, "isWfcEnabled :: isEnabledByPlatform=" + isEnabledByPlatform);
if (DBG) Log.d(LOG_TAG, "isWfcEnabled :: isEnabledByUser=" + isEnabledByUser);
return isEnabledByPlatform && isEnabledByUser;
@@ -64,8 +66,8 @@
* enabled, this will return {@code false}.
*/
public static boolean isWfcModeWifiOnly(Context context) {
- boolean isWifiOnlyMode =
- ImsManager.getWfcMode(context) == ImsConfig.WfcModeFeatureValueConstants.WIFI_ONLY;
+ boolean isWifiOnlyMode = getDefaultImsManagerInstance(context).getWfcMode()
+ == ImsConfig.WfcModeFeatureValueConstants.WIFI_ONLY;
if (DBG) Log.d(LOG_TAG, "isWfcModeWifiOnly :: isWifiOnlyMode" + isWifiOnlyMode);
return isWfcEnabled(context) && isWifiOnlyMode;
}
@@ -86,7 +88,7 @@
return false;
}
- if (!ImsManager.isWfcProvisionedOnDevice(context)) {
+ if (!getDefaultImsManagerInstance(context).isWfcProvisionedOnDevice()) {
return false;
}
@@ -100,4 +102,8 @@
}
return false;
}
+
+ private static ImsManager getDefaultImsManagerInstance(Context context) {
+ return ImsManager.getInstance(context, SubscriptionManager.getDefaultVoicePhoneId());
+ }
}
diff --git a/src/com/android/phone/MobileNetworkSettings.java b/src/com/android/phone/MobileNetworkSettings.java
index 4f449cf..5b9e638 100644
--- a/src/com/android/phone/MobileNetworkSettings.java
+++ b/src/com/android/phone/MobileNetworkSettings.java
@@ -145,18 +145,29 @@
}
/**
- * Whether to show the Enhanced 4G LTE settings.
+ * Whether to show the Enhanced 4G LTE settings in search result.
*
* <p>We show this settings if the VoLTE can be enabled by this device and the carrier app
- * doesn't set {@link CarrierConfigManager.KEY_HIDE_ENHANCED_4G_LTE_BOOL} to false.
+ * doesn't set {@link CarrierConfigManager#KEY_HIDE_ENHANCED_4G_LTE_BOOL} to false.
*/
- public static boolean hideEnhanced4gLteSettings(Context context,
- PersistableBundle carrierConfig) {
- return !(ImsManager.isVolteEnabledByPlatform(context)
- && ImsManager.isVolteProvisionedOnDevice(context))
- || carrierConfig.getBoolean(
- CarrierConfigManager.KEY_HIDE_ENHANCED_4G_LTE_BOOL);
+ public static boolean hideEnhanced4gLteSettings(Context context) {
+ List<SubscriptionInfo> sil =
+ SubscriptionManager.from(context).getActiveSubscriptionInfoList();
+ // Check all active subscriptions. We only hide the button if it's disabled for all
+ // active subscriptions.
+ for (SubscriptionInfo subInfo : sil) {
+ ImsManager imsManager = ImsManager.getInstance(context, subInfo.getSimSlotIndex());
+ PersistableBundle carrierConfig = PhoneGlobals.getInstance()
+ .getCarrierConfigForSubId(subInfo.getSubscriptionId());
+ if ((imsManager.isVolteEnabledByPlatform()
+ && imsManager.isVolteProvisionedOnDevice())
+ || carrierConfig.getBoolean(
+ CarrierConfigManager.KEY_HIDE_ENHANCED_4G_LTE_BOOL)) {
+ return false;
+ }
+ }
+ return true;
}
public static class MobileNetworkFragment extends PreferenceFragment implements
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index 5305aa8..8f4cc09 100644
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -3145,7 +3145,7 @@
@Override
public void enableVideoCalling(boolean enable) {
enforceModifyPermission();
- ImsManager.setVtSetting(mPhone.getContext(), enable);
+ ImsManager.getInstance(mPhone.getContext(), mPhone.getPhoneId()).setVtSetting(enable);
}
@Override
@@ -3158,9 +3158,10 @@
// enabled video calling, if IMS is disabled we aren't able to support video calling.
// In the long run, we may instead need to check if there exists a connection service
// which can support video calling.
- return ImsManager.isVtEnabledByPlatform(mPhone.getContext())
- && ImsManager.isEnhanced4gLteModeSettingEnabledByUser(mPhone.getContext())
- && ImsManager.isVtEnabledByUser(mPhone.getContext());
+ ImsManager imsManager = ImsManager.getInstance(mPhone.getContext(), mPhone.getPhoneId());
+ return imsManager.isVtEnabledByPlatform()
+ && imsManager.isEnhanced4gLteModeSettingEnabledByUser()
+ && imsManager.isVtEnabledByUser();
}
@Override
diff --git a/src/com/android/phone/PhoneSearchIndexablesProvider.java b/src/com/android/phone/PhoneSearchIndexablesProvider.java
index b0491ec..9c5f354 100644
--- a/src/com/android/phone/PhoneSearchIndexablesProvider.java
+++ b/src/com/android/phone/PhoneSearchIndexablesProvider.java
@@ -36,7 +36,6 @@
import android.provider.SearchIndexablesContract.RawData;
import android.provider.SearchIndexablesProvider;
import android.support.annotation.VisibleForTesting;
-import android.telephony.TelephonyManager;
import android.telephony.euicc.EuiccManager;
public class PhoneSearchIndexablesProvider extends SearchIndexablesProvider {
@@ -126,10 +125,7 @@
}
@VisibleForTesting boolean isEnhanced4gLteHidden() {
- TelephonyManager telephonyManager =
- (TelephonyManager) getContext().getSystemService(Context.TELEPHONY_SERVICE);
- return MobileNetworkSettings
- .hideEnhanced4gLteSettings(getContext(), telephonyManager.getCarrierConfig());
+ return MobileNetworkSettings.hideEnhanced4gLteSettings(getContext());
}
private Object[] createNonIndexableRow(String key) {
diff --git a/src/com/android/services/telephony/TelecomAccountRegistry.java b/src/com/android/services/telephony/TelecomAccountRegistry.java
index dacf7e0..3f21d17 100644
--- a/src/com/android/services/telephony/TelecomAccountRegistry.java
+++ b/src/com/android/services/telephony/TelecomAccountRegistry.java
@@ -185,8 +185,8 @@
}
mIsVideoCapable = mPhone.isVideoEnabled();
- boolean isVideoEnabledByPlatform =
- ImsManager.isVtEnabledByPlatform(mPhone.getContext());
+ boolean isVideoEnabledByPlatform = ImsManager.getInstance(mPhone.getContext(),
+ mPhone.getPhoneId()).isVtEnabledByPlatform();
if (!mIsPrimaryUser) {
Log.i(this, "Disabling video calling for secondary user.");