Merge "Disable VT when RTT capability is on"
diff --git a/sip/src/com/android/services/telephony/sip/SipUtil.java b/sip/src/com/android/services/telephony/sip/SipUtil.java
index d674225..ff38754 100644
--- a/sip/src/com/android/services/telephony/sip/SipUtil.java
+++ b/sip/src/com/android/services/telephony/sip/SipUtil.java
@@ -134,7 +134,7 @@
.setAddress(sipUri)
.setShortDescription(sipAddress)
.setIcon(Icon.createWithResource(
- context.getResources(), R.drawable.ic_dialer_sip_black_24dp))
+ context, R.drawable.ic_dialer_sip_black_24dp))
.setExtras(phoneAccountExtras)
.setSupportedUriSchemes(supportedUriSchemes);
diff --git a/src/com/android/phone/CallFeaturesSetting.java b/src/com/android/phone/CallFeaturesSetting.java
index 92af129..6c69a33 100644
--- a/src/com/android/phone/CallFeaturesSetting.java
+++ b/src/com/android/phone/CallFeaturesSetting.java
@@ -38,6 +38,7 @@
import android.telephony.CarrierConfigManager;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
+import android.telephony.ims.ProvisioningManager;
import android.telephony.ims.feature.ImsFeature;
import android.util.Log;
import android.view.MenuItem;
@@ -214,10 +215,32 @@
}
};
+ private final ProvisioningManager.Callback mProvisioningCallback =
+ new ProvisioningManager.Callback() {
+ @Override
+ public void onProvisioningIntChanged(int item, int value) {
+ if (item == ImsConfig.ConfigConstants.VOICE_OVER_WIFI_SETTING_ENABLED
+ || item == ImsConfig.ConfigConstants.VLT_SETTING_ENABLED
+ || item == ImsConfig.ConfigConstants.LVC_SETTING_ENABLED) {
+ updateVtWfc();
+ }
+ }
+ };
+
@Override
protected void onPause() {
super.onPause();
listenPhoneState(false);
+
+ // Remove callback for provisioning changes.
+ try {
+ if (mImsMgr != null) {
+ mImsMgr.getConfigInterface().removeConfigCallback(
+ mProvisioningCallback.getBinder());
+ }
+ } catch (ImsException e) {
+ Log.w(LOG_TAG, "onPause: Unable to remove callback for provisioning changes");
+ }
}
@Override
@@ -310,7 +333,24 @@
}
}
}
+ updateVtWfc();
+ // Register callback for provisioning changes.
+ try {
+ if (mImsMgr != null) {
+ mImsMgr.getConfigInterface().addConfigCallback(mProvisioningCallback);
+ }
+ } catch (ImsException e) {
+ Log.w(LOG_TAG, "onResume: Unable to register callback for provisioning changes.");
+ }
+ }
+
+ private void updateVtWfc() {
+ PreferenceScreen prefSet = getPreferenceScreen();
+ TelephonyManager telephonyManager = getSystemService(TelephonyManager.class)
+ .createForSubscriptionId(mPhone.getSubId());
+ PersistableBundle carrierConfig =
+ PhoneGlobals.getInstance().getCarrierConfigForSubId(mPhone.getSubId());
if (mImsMgr.isVtEnabledByPlatform() && mImsMgr.isVtProvisionedOnDevice()
&& (carrierConfig.getBoolean(
CarrierConfigManager.KEY_IGNORE_DATA_ENABLED_CHANGED_FOR_VIDEO_CALLS)
@@ -320,6 +360,7 @@
? mImsMgr.isVtEnabledByUser() : false;
mEnableVideoCalling.setChecked(currentValue);
mEnableVideoCalling.setOnPreferenceChangeListener(this);
+ prefSet.addPreference(mEnableVideoCalling);
} else {
prefSet.removePreference(mEnableVideoCalling);
}
@@ -335,6 +376,7 @@
mButtonWifiCalling.setTitle(resolutions.get(0).loadLabel(pm));
mButtonWifiCalling.setSummary(null);
mButtonWifiCalling.setIntent(intent);
+ prefSet.addPreference(mButtonWifiCalling);
} else {
prefSet.removePreference(mButtonWifiCalling);
}
@@ -363,6 +405,7 @@
}
}
mButtonWifiCalling.setSummary(resId);
+ prefSet.addPreference(mButtonWifiCalling);
}
try {
diff --git a/src/com/android/phone/EmergencyDialer.java b/src/com/android/phone/EmergencyDialer.java
index d7443d5..65edcf9 100644
--- a/src/com/android/phone/EmergencyDialer.java
+++ b/src/com/android/phone/EmergencyDialer.java
@@ -905,6 +905,13 @@
private void placeCall(String number, int callSource, ShortcutViewUtils.PhoneInfo phone) {
Bundle extras = new Bundle();
extras.putInt(TelecomManager.EXTRA_CALL_SOURCE, callSource);
+ /**
+ * This is used for Telecom and Telephony to tell modem user's intent is emergency call,
+ * when the dialed number is ambiguous and identified as both emergency number and any
+ * other non-emergency number; e.g. in some situation, 611 could be both an emergency
+ * number in a country and a non-emergency number of a carrier's customer service hotline.
+ */
+ extras.putBoolean(TelecomManager.EXTRA_IS_USER_INTENT_EMERGENCY_CALL, true);
if (phone != null && phone.getPhoneAccountHandle() != null) {
// Requests to dial through the specified phone.
diff --git a/src/com/android/phone/MobileNetworkSettings.java b/src/com/android/phone/MobileNetworkSettings.java
index 465b89a..a7da9db 100644
--- a/src/com/android/phone/MobileNetworkSettings.java
+++ b/src/com/android/phone/MobileNetworkSettings.java
@@ -57,6 +57,7 @@
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.telephony.euicc.EuiccManager;
+import android.telephony.ims.ProvisioningManager;
import android.telephony.ims.feature.ImsFeature;
import android.text.TextUtils;
import android.util.Log;
@@ -891,6 +892,18 @@
}
}
+ private final ProvisioningManager.Callback mProvisioningCallback =
+ new ProvisioningManager.Callback() {
+ @Override
+ public void onProvisioningIntChanged(int item, int value) {
+ if (item == ImsConfig.ConfigConstants.VOICE_OVER_WIFI_SETTING_ENABLED
+ || item == ImsConfig.ConfigConstants.VLT_SETTING_ENABLED
+ || item == ImsConfig.ConfigConstants.LVC_SETTING_ENABLED) {
+ updateBody();
+ }
+ }
+ };
+
@Override
public void onDestroy() {
super.onDestroy();
@@ -940,6 +953,15 @@
context.getContentResolver().registerContentObserver(ENFORCE_MANAGED_URI, false,
mDpcEnforcedContentObserver);
+ // Register callback for provisioning changes.
+ try {
+ if (mImsMgr != null) {
+ mImsMgr.getConfigInterface().addConfigCallback(mProvisioningCallback);
+ }
+ } catch (ImsException e) {
+ Log.w(LOG_TAG, "onResume: Unable to register callback for provisioning changes.");
+ }
+
Log.i(LOG_TAG, "onResume:-");
}
@@ -1332,6 +1354,17 @@
final Context context = getActivity();
context.unregisterReceiver(mPhoneChangeReceiver);
context.getContentResolver().unregisterContentObserver(mDpcEnforcedContentObserver);
+
+ // Remove callback for provisioning changes.
+ try {
+ if (mImsMgr != null) {
+ mImsMgr.getConfigInterface().removeConfigCallback(
+ mProvisioningCallback.getBinder());
+ }
+ } catch (ImsException e) {
+ Log.w(LOG_TAG, "onPause: Unable to remove callback for provisioning changes");
+ }
+
if (DBG) log("onPause:-");
}
@@ -1867,10 +1900,23 @@
return;
}
+ // See what Telecom thinks the SIM call manager is.
final PhoneAccountHandle simCallManager =
TelecomManager.from(getContext()).getSimCallManager();
- if (simCallManager != null) {
+ // Check which SIM call manager is for the current sub ID.
+ PersistableBundle carrierConfig = mCarrierConfigManager.getConfigForSubId(mSubId);
+ String currentSubSimCallManager = null;
+ if (carrierConfig != null) {
+ currentSubSimCallManager = carrierConfig.getString(
+ CarrierConfigManager.KEY_DEFAULT_SIM_CALL_MANAGER_STRING);
+ }
+
+ // Only try to configure the phone account if this is the sim call manager for the
+ // current sub.
+ if (simCallManager != null
+ && simCallManager.getComponentName().flattenToString().equals(
+ currentSubSimCallManager)) {
Intent intent = MobileNetworkSettings.buildPhoneAccountConfigureIntent(
getContext(), simCallManager);
PackageManager pm = getContext().getPackageManager();
diff --git a/src/com/android/services/telephony/ImsConference.java b/src/com/android/services/telephony/ImsConference.java
index c992c74..cada504 100644
--- a/src/com/android/services/telephony/ImsConference.java
+++ b/src/com/android/services/telephony/ImsConference.java
@@ -1170,8 +1170,7 @@
setStatusHints(new StatusHints(
context.getString(R.string.status_hint_label_wifi_call),
Icon.createWithResource(
- context.getResources(),
- R.drawable.ic_signal_wifi_4_bar_24dp),
+ context, R.drawable.ic_signal_wifi_4_bar_24dp),
null /* extras */));
}
} else {
diff --git a/src/com/android/services/telephony/TelephonyConnection.java b/src/com/android/services/telephony/TelephonyConnection.java
index 3886e58..85f0d48 100644
--- a/src/com/android/services/telephony/TelephonyConnection.java
+++ b/src/com/android/services/telephony/TelephonyConnection.java
@@ -2109,8 +2109,7 @@
setStatusHints(new StatusHints(
context.getString(labelId),
Icon.createWithResource(
- context.getResources(),
- R.drawable.ic_signal_wifi_4_bar_24dp),
+ context, R.drawable.ic_signal_wifi_4_bar_24dp),
null /* extras */));
} else {
setStatusHints(null);