Replace ImsManager static methods with proper ones.
ImsManager static methods are deprecated since it doesn't support
MSIM devices. It will now always call getInstance with phoneId and
then call corresponding non-static methods.
Bug: 67602046
Test: regression tests
Change-Id: Iad4baa81c475704ea552c83b3beed93b08532722
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 b5efabf..aaa3bef 100644
--- a/src/com/android/phone/MobileNetworkSettings.java
+++ b/src/com/android/phone/MobileNetworkSettings.java
@@ -154,18 +154,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 d199100..de59470 100644
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -39,7 +39,6 @@
import android.os.Message;
import android.os.Messenger;
import android.os.PersistableBundle;
-import android.os.Process;
import android.os.ResultReceiver;
import android.os.ServiceManager;
import android.os.UserHandle;
@@ -3094,7 +3093,7 @@
@Override
public void enableVideoCalling(boolean enable) {
enforceModifyPermission();
- ImsManager.setVtSetting(mPhone.getContext(), enable);
+ ImsManager.getInstance(mPhone.getContext(), mPhone.getPhoneId()).setVtSetting(enable);
}
@Override
@@ -3107,9 +3106,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 22786a3..b7f6738 100644
--- a/src/com/android/phone/PhoneSearchIndexablesProvider.java
+++ b/src/com/android/phone/PhoneSearchIndexablesProvider.java
@@ -37,7 +37,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 {
@@ -133,10 +132,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 fd89159..fb39f9c 100644
--- a/src/com/android/services/telephony/TelecomAccountRegistry.java
+++ b/src/com/android/services/telephony/TelecomAccountRegistry.java
@@ -184,8 +184,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.");