Merge "Remove the OEM hook implementation and usage"
diff --git a/src/com/android/phone/CallFeaturesSetting.java b/src/com/android/phone/CallFeaturesSetting.java
index 1d264fb..e5527bc 100644
--- a/src/com/android/phone/CallFeaturesSetting.java
+++ b/src/com/android/phone/CallFeaturesSetting.java
@@ -42,6 +42,7 @@
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;
@@ -50,6 +51,7 @@
import android.widget.Toast;
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;
@@ -105,6 +107,7 @@
private static final String ENABLE_VIDEO_CALLING_KEY = "button_enable_video_calling";
private Phone mPhone;
+ private ImsManager mImsMgr;
private SubscriptionInfoHelper mSubscriptionInfoHelper;
private TelecomManager mTelecomManager;
@@ -188,6 +191,17 @@
mTelecomManager = TelecomManager.from(this);
}
+ private void updateImsManager(Phone phone) {
+ log("updateImsManager :: phone.getContext()=" + phone.getContext()
+ + " phone.getPhoneId()=" + phone.getPhoneId());
+ mImsMgr = ImsManager.getInstance(phone.getContext(), phone.getPhoneId());
+ if (mImsMgr == null) {
+ log("updateImsManager :: Could not get ImsManager instance!");
+ } else {
+ log("updateImsManager :: mImsMgr=" + mImsMgr);
+ }
+ }
+
private final PhoneStateListener mPhoneStateListener = new PhoneStateListener() {
@Override
public void onCallStateChanged(int state, String incomingNumber) {
@@ -210,6 +224,7 @@
protected void onResume() {
super.onResume();
+ updateImsManager(mPhone);
PreferenceScreen preferenceScreen = getPreferenceScreen();
if (preferenceScreen != null) {
preferenceScreen.removeAll();
@@ -347,6 +362,19 @@
}
wifiCallingSettings.setSummary(resId);
}
+
+ try {
+ if (mImsMgr.getImsServiceStatus() != ImsFeature.STATE_READY) {
+ log("Feature state not ready so remove vt and wfc settings for "
+ + " phone =" + mPhone.getPhoneId());
+ prefSet.removePreference(wifiCallingSettings);
+ prefSet.removePreference(mEnableVideoCalling);
+ }
+ } catch (ImsException ex) {
+ log("Exception when trying to get ImsServiceStatus: " + ex);
+ prefSet.removePreference(wifiCallingSettings);
+ prefSet.removePreference(mEnableVideoCalling);
+ }
}
/**
diff --git a/src/com/android/phone/MobileNetworkSettings.java b/src/com/android/phone/MobileNetworkSettings.java
index 03865fe..a37bb9e 100644
--- a/src/com/android/phone/MobileNetworkSettings.java
+++ b/src/com/android/phone/MobileNetworkSettings.java
@@ -46,6 +46,7 @@
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.ServiceState;
import android.telephony.SubscriptionInfo;
@@ -61,6 +62,7 @@
import android.widget.TabHost;
import com.android.ims.ImsConfig;
+import com.android.ims.ImsException;
import com.android.ims.ImsManager;
import com.android.internal.telephony.Phone;
import com.android.internal.telephony.PhoneConstants;
@@ -214,6 +216,7 @@
private UserManager mUm;
private Phone mPhone;
+ private ImsManager mImsMgr;
private MyHandler mHandler;
private boolean mOkClicked;
@@ -486,6 +489,13 @@
mPhone = PhoneGlobals.getPhone();
}
Log.i(LOG_TAG, "updatePhone:- slotId=" + slotId + " sir=" + sir);
+
+ mImsMgr = ImsManager.getInstance(mPhone.getContext(), mPhone.getPhoneId());
+ if (mImsMgr == null) {
+ log("updatePhone :: Could not get ImsManager instance!");
+ } else if (DBG) {
+ log("updatePhone :: mImsMgr=" + mImsMgr);
+ }
}
private TabHost.TabContentFactory mEmptyTabContent = new TabHost.TabContentFactory() {
@@ -840,8 +850,16 @@
android.util.Log.d(LOG_TAG, "keep ltePref");
}
- if (hideEnhanced4gLteSettings(getActivity(), carrierConfig)) {
- Preference pref = prefSet.findPreference(BUTTON_4G_LTE_KEY);
+ Preference pref = prefSet.findPreference(BUTTON_4G_LTE_KEY);
+ try {
+ if ((mImsMgr.getImsServiceStatus() != ImsFeature.STATE_READY)
+ || hideEnhanced4gLteSettings(getActivity(), carrierConfig)) {
+ if (pref != null) {
+ prefSet.removePreference(pref);
+ }
+ }
+ } catch (ImsException ex) {
+ log("Exception when trying to get ImsServiceStatus: " + ex);
if (pref != null) {
prefSet.removePreference(pref);
}
diff --git a/src/com/android/phone/settings/VoicemailSettingsActivity.java b/src/com/android/phone/settings/VoicemailSettingsActivity.java
index 04e8bf5..4d55421 100644
--- a/src/com/android/phone/settings/VoicemailSettingsActivity.java
+++ b/src/com/android/phone/settings/VoicemailSettingsActivity.java
@@ -24,6 +24,7 @@
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
+import android.os.PersistableBundle;
import android.os.UserManager;
import android.preference.Preference;
import android.preference.PreferenceActivity;
@@ -31,6 +32,7 @@
import android.preference.SwitchPreference;
import android.provider.ContactsContract.CommonDataKinds;
import android.provider.Settings;
+import android.telephony.CarrierConfigManager;
import android.telephony.TelephonyManager;
import android.text.BidiFormatter;
import android.text.TextDirectionHeuristics;
@@ -250,6 +252,10 @@
mSubMenuVoicemailSettings.setParentActivity(this, VOICEMAIL_PREF_ID, this);
mSubMenuVoicemailSettings.setDialogOnClosedListener(this);
mSubMenuVoicemailSettings.setDialogTitle(R.string.voicemail_settings_number_label);
+ if (!getBooleanCarrierConfig(
+ CarrierConfigManager.KEY_EDITABLE_VOICEMAIL_NUMBER_SETTING_BOOL)) {
+ mSubMenuVoicemailSettings.setEnabled(false);
+ }
}
mVoicemailProviders = (VoicemailProviderListPreference) findPreference(
@@ -545,6 +551,23 @@
}
}
+ /**
+ * Get the boolean config from carrier config manager.
+ *
+ * @param key config key defined in CarrierConfigManager
+ * @return boolean value of corresponding key.
+ */
+ private boolean getBooleanCarrierConfig(String key) {
+ PersistableBundle b = PhoneGlobals.getInstance()
+ .getCarrierConfigForSubId(mPhone.getSubId());
+ if (b != null) {
+ return b.getBoolean(key);
+ } else {
+ // Return static default defined in CarrierConfigManager.
+ return CarrierConfigManager.getDefaultConfig().getBoolean(key);
+ }
+ }
+
//*********************************************************************************************
// Activity Dialog Methods