Skip carrier priv check for trusted UIDs am: 54a2a0c4db
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/services/Telephony/+/12142007
Change-Id: If63810384db7141e6062dc0fbbf56bde765e92d6
diff --git a/res/layout/radio_info.xml b/res/layout/radio_info.xml
index 40c2e53..71cd32a 100644
--- a/res/layout/radio_info.xml
+++ b/res/layout/radio_info.xml
@@ -122,6 +122,37 @@
<TextView android:id="@+id/ul_kbps" style="@style/info_value" />
</LinearLayout>
+
+ <!-- EN-DC Available -->
+ <LinearLayout style="@style/RadioInfo_entry_layout" android:orientation="horizontal">
+ <TextView android:id="@+id/endc_available_label" android:text="@string/radio_info_endc_available" style="@style/info_label" />
+ <TextView android:id="@+id/endc_available" style="@style/info_value" />
+ </LinearLayout>
+
+ <!-- DCNR Restricted -->
+ <LinearLayout style="@style/RadioInfo_entry_layout" android:orientation="horizontal">
+ <TextView android:id="@+id/dcnr_restricted_label" android:text="@string/radio_info_dcnr_restricted" style="@style/info_label" />
+ <TextView android:id="@+id/dcnr_restricted" style="@style/info_value" />
+ </LinearLayout>
+
+ <!-- NR Available -->
+ <LinearLayout style="@style/RadioInfo_entry_layout" android:orientation="horizontal">
+ <TextView android:id="@+id/nr_available_label" android:text="@string/radio_info_nr_available" style="@style/info_label" />
+ <TextView android:id="@+id/nr_available" style="@style/info_value" />
+ </LinearLayout>
+
+ <!-- NR State -->
+ <LinearLayout style="@style/RadioInfo_entry_layout" android:orientation="horizontal">
+ <TextView android:id="@+id/nr_state_label" android:text="@string/radio_info_nr_state" style="@style/info_label" />
+ <TextView android:id="@+id/nr_state" style="@style/info_value" />
+ </LinearLayout>
+
+ <!-- NR Frequency -->
+ <LinearLayout style="@style/RadioInfo_entry_layout" android:orientation="horizontal">
+ <TextView android:id="@+id/nr_frequency_label" android:text="@string/radio_info_nr_frequency" style="@style/info_label" />
+ <TextView android:id="@+id/nr_frequency" style="@style/info_value" />
+ </LinearLayout>
+
<!-- Physical Channel Config -->
<LinearLayout style="@style/RadioInfo_entry_layout">
<TextView android:text="@string/radio_info_phy_chan_config" style="@style/info_label" />
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 1e44c72..6509f13 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -2131,6 +2131,16 @@
<string name="radio_info_toggle_dns_check_label">Toggle DNS Check</string>
<!-- Radio Info screen. Label for a status item. Used for diagnostic info screens, precise translation isn't needed -->
<string name="oem_radio_info_label">OEM-specific Info/Settings</string>
+ <!-- Radio Info screen. Label for a status item. Used for diagnostic info screens, precise translation isn't needed -->
+ <string name="radio_info_endc_available">EN-DC Available:</string>
+ <!-- Radio Info screen. Label for a status item. Used for diagnostic info screens, precise translation isn't needed -->
+ <string name="radio_info_dcnr_restricted">DCNR Restricted:</string>
+ <!-- Radio Info screen. Label for a status item. Used for diagnostic info screens, precise translation isn't needed -->
+ <string name="radio_info_nr_available">NR Available:</string>
+ <!-- Radio Info screen. Label for a status item. Used for diagnostic info screens, precise translation isn't needed -->
+ <string name="radio_info_nr_state">NR State:</string>
+ <!-- Radio Info screen. Label for a status item. Used for diagnostic info screens, precise translation isn't needed -->
+ <string name="radio_info_nr_frequency">NR Frequency:</string>
<!-- Band Mode Selection -->
<!-- Band mode screen. Title of activity. -->
diff --git a/src/com/android/phone/ImsUtil.java b/src/com/android/phone/ImsUtil.java
index 18fc534..38936ec 100644
--- a/src/com/android/phone/ImsUtil.java
+++ b/src/com/android/phone/ImsUtil.java
@@ -113,12 +113,18 @@
public static boolean shouldPromoteWfc(Context context, int phoneId) {
CarrierConfigManager cfgManager = (CarrierConfigManager) context
.getSystemService(Context.CARRIER_CONFIG_SERVICE);
- if (cfgManager == null || !cfgManager.getConfigForSubId(getSubId(phoneId))
- .getBoolean(CarrierConfigManager.KEY_CARRIER_PROMOTE_WFC_ON_CALL_FAIL_BOOL)) {
+
+ ImsManager imsManager = ImsManager.getInstance(context, phoneId);
+ if (!imsManager.isWfcEnabledByPlatform()) {
return false;
}
- if (!getDefaultImsManagerInstance(context).isWfcProvisionedOnDevice()) {
+ if (!imsManager.isWfcProvisionedOnDevice()) {
+ return false;
+ }
+
+ if (cfgManager == null || !cfgManager.getConfigForSubId(getSubId(phoneId))
+ .getBoolean(CarrierConfigManager.KEY_CARRIER_PROMOTE_WFC_ON_CALL_FAIL_BOOL)) {
return false;
}
diff --git a/src/com/android/phone/settings/RadioInfo.java b/src/com/android/phone/settings/RadioInfo.java
index 31b7a9e..568adb8 100644
--- a/src/com/android/phone/settings/RadioInfo.java
+++ b/src/com/android/phone/settings/RadioInfo.java
@@ -40,6 +40,7 @@
import android.os.Message;
import android.os.SystemProperties;
import android.provider.Settings;
+import android.telephony.AccessNetworkConstants;
import android.telephony.CarrierConfigManager;
import android.telephony.CellIdentityCdma;
import android.telephony.CellIdentityGsm;
@@ -55,6 +56,8 @@
import android.telephony.CellSignalStrengthGsm;
import android.telephony.CellSignalStrengthLte;
import android.telephony.CellSignalStrengthWcdma;
+import android.telephony.DataSpecificRegistrationInfo;
+import android.telephony.NetworkRegistrationInfo;
import android.telephony.PhoneStateListener;
import android.telephony.PhysicalChannelConfig;
import android.telephony.PreciseCallState;
@@ -239,6 +242,11 @@
private TextView mDnsCheckState;
private TextView mDownlinkKbps;
private TextView mUplinkKbps;
+ private TextView mEndcAvailable;
+ private TextView mDcnrRestricted;
+ private TextView mNrAvailable;
+ private TextView mNrState;
+ private TextView mNrFrequency;
private EditText mSmsc;
private Switch mRadioPowerOnSwitch;
private Button mCellInfoRefreshRateButton;
@@ -356,6 +364,7 @@
updateRadioPowerState();
updateNetworkType();
updateImsProvisionedState();
+ updateNrStats(serviceState);
}
}
@@ -500,9 +509,28 @@
mPingHostnameV4 = (TextView) findViewById(R.id.pingHostnameV4);
mPingHostnameV6 = (TextView) findViewById(R.id.pingHostnameV6);
mHttpClientTest = (TextView) findViewById(R.id.httpClientTest);
-
+ mEndcAvailable = (TextView) findViewById(R.id.endc_available);
+ mDcnrRestricted = (TextView) findViewById(R.id.dcnr_restricted);
+ mNrAvailable = (TextView) findViewById(R.id.nr_available);
+ mNrState = (TextView) findViewById(R.id.nr_state);
+ mNrFrequency = (TextView) findViewById(R.id.nr_frequency);
mPhyChanConfig = (TextView) findViewById(R.id.phy_chan_config);
+ // hide 5G stats on devices that don't support 5G
+ if ((mTelephonyManager.getSupportedRadioAccessFamily()
+ & TelephonyManager.NETWORK_TYPE_BITMASK_NR) == 0) {
+ ((TextView) findViewById(R.id.endc_available_label)).setVisibility(View.GONE);
+ mEndcAvailable.setVisibility(View.GONE);
+ ((TextView) findViewById(R.id.dcnr_restricted_label)).setVisibility(View.GONE);
+ mDcnrRestricted.setVisibility(View.GONE);
+ ((TextView) findViewById(R.id.nr_available_label)).setVisibility(View.GONE);
+ mNrAvailable.setVisibility(View.GONE);
+ ((TextView) findViewById(R.id.nr_state_label)).setVisibility(View.GONE);
+ mNrState.setVisibility(View.GONE);
+ ((TextView) findViewById(R.id.nr_frequency_label)).setVisibility(View.GONE);
+ mNrFrequency.setVisibility(View.GONE);
+ }
+
mPreferredNetworkType = (Spinner) findViewById(R.id.preferredNetworkType);
ArrayAdapter<String> mPreferredNetworkTypeAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, PREFERRED_NETWORK_LABELS);
@@ -624,6 +652,7 @@
updateProperties();
updateDnsCheckState();
updateNetworkType();
+ updateNrStats(null);
updateLocation(mCellLocationResult);
updateCellInfo(mCellInfoResult);
@@ -1131,6 +1160,32 @@
}
}
+ private void updateNrStats(ServiceState serviceState) {
+ if ((mTelephonyManager.getSupportedRadioAccessFamily()
+ & TelephonyManager.NETWORK_TYPE_BITMASK_NR) == 0) {
+ return;
+ }
+
+ ServiceState ss = serviceState;
+ if (ss == null && mPhone != null) {
+ ss = mPhone.getServiceState();
+ }
+ if (ss != null) {
+ NetworkRegistrationInfo nri = ss.getNetworkRegistrationInfo(
+ NetworkRegistrationInfo.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
+ if (nri != null) {
+ DataSpecificRegistrationInfo dsri = nri.getDataSpecificInfo();
+ if (dsri != null) {
+ mEndcAvailable.setText(dsri.isEnDcAvailable ? "True" : "False");
+ mDcnrRestricted.setText(dsri.isDcNrRestricted ? "True" : "False");
+ mNrAvailable.setText(dsri.isNrAvailable ? "True" : "False");
+ }
+ }
+ mNrState.setText(NetworkRegistrationInfo.nrStateToString(ss.getNrState()));
+ mNrFrequency.setText(ServiceState.frequencyRangeToString(ss.getNrFrequencyRange()));
+ }
+ }
+
private void updateProperties() {
String s;
Resources r = getResources();
diff --git a/src/com/android/services/telephony/TelecomAccountRegistry.java b/src/com/android/services/telephony/TelecomAccountRegistry.java
index 3b8f4fd..4edd36d 100644
--- a/src/com/android/services/telephony/TelecomAccountRegistry.java
+++ b/src/com/android/services/telephony/TelecomAccountRegistry.java
@@ -847,7 +847,8 @@
// Next check whether we're in or near a country that supports it
String country =
mPhone.getServiceStateTracker().getLocaleTracker()
- .getCurrentCountry().toLowerCase();
+ .getLastKnownCountryIso().toLowerCase();
+
String[] supportedCountries = mContext.getResources().getStringArray(
R.array.config_simless_emergency_rtt_supported_countries);
if (supportedCountries == null || Arrays.stream(supportedCountries).noneMatch(
@@ -856,7 +857,7 @@
+ " not supported in this country: " + country);
return false;
}
-
+
return true;
}