From c920a58d5f2207bdaa29d41ccc53e68d5bf9d08c Mon Sep 17 00:00:00 2001 From: Varun Shah Date: Fri, 5 Jun 2020 21:47:29 -0700 Subject: [PATCH 1/7] Add blob size to shared data dev options screens. Bug: 156671006 Test: make RunSettingsRoboTests ROBOTEST_FILTER=SharedDataPreferenceControllerTest Test: manual (visual) Change-Id: Ia98c3d9812f6225ee834b4d1b0f12a1a73a87598 --- res/layout/blob_list_item_view.xml | 7 +++++++ .../settings/development/storage/BlobInfoListView.java | 1 + .../settings/development/storage/BlobInfoViewHolder.java | 2 ++ .../settings/development/storage/LeaseInfoListView.java | 2 ++ .../settings/development/storage/SharedDataUtils.java | 5 +++++ .../storage/SharedDataPreferenceControllerTest.java | 3 ++- 6 files changed, 19 insertions(+), 1 deletion(-) diff --git a/res/layout/blob_list_item_view.xml b/res/layout/blob_list_item_view.xml index 897d19c2694..339c8ef7d0d 100644 --- a/res/layout/blob_list_item_view.xml +++ b/res/layout/blob_list_item_view.xml @@ -47,4 +47,11 @@ android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceSmall" android:textColor="?android:attr/textColorSecondary"/> + + diff --git a/src/com/android/settings/development/storage/BlobInfoListView.java b/src/com/android/settings/development/storage/BlobInfoListView.java index 8e312a25579..54579645f16 100644 --- a/src/com/android/settings/development/storage/BlobInfoListView.java +++ b/src/com/android/settings/development/storage/BlobInfoListView.java @@ -158,6 +158,7 @@ public class BlobInfoListView extends ListActivity { holder.blobId.setText(getString(R.string.blob_id_text, blob.getId())); holder.blobExpiry.setText(getString(R.string.blob_expires_text, SharedDataUtils.formatTime(blob.getExpiryTimeMs()))); + holder.blobSize.setText(SharedDataUtils.formatSize(blob.getSizeBytes())); return convertView; } } diff --git a/src/com/android/settings/development/storage/BlobInfoViewHolder.java b/src/com/android/settings/development/storage/BlobInfoViewHolder.java index de8c9a95a4b..073a138fe98 100644 --- a/src/com/android/settings/development/storage/BlobInfoViewHolder.java +++ b/src/com/android/settings/development/storage/BlobInfoViewHolder.java @@ -30,6 +30,7 @@ class BlobInfoViewHolder { TextView blobLabel; TextView blobId; TextView blobExpiry; + TextView blobSize; static BlobInfoViewHolder createOrRecycle(LayoutInflater inflater, View convertView) { if (convertView != null) { @@ -42,6 +43,7 @@ class BlobInfoViewHolder { holder.blobLabel = convertView.findViewById(R.id.blob_label); holder.blobId = convertView.findViewById(R.id.blob_id); holder.blobExpiry = convertView.findViewById(R.id.blob_expiry); + holder.blobSize = convertView.findViewById(R.id.blob_size); convertView.setTag(holder); return holder; } diff --git a/src/com/android/settings/development/storage/LeaseInfoListView.java b/src/com/android/settings/development/storage/LeaseInfoListView.java index ef9e5b813f2..b20bb65ff45 100644 --- a/src/com/android/settings/development/storage/LeaseInfoListView.java +++ b/src/com/android/settings/development/storage/LeaseInfoListView.java @@ -93,11 +93,13 @@ public class LeaseInfoListView extends ListActivity { final TextView blobLabel = headerView.findViewById(R.id.blob_label); final TextView blobId = headerView.findViewById(R.id.blob_id); final TextView blobExpiry = headerView.findViewById(R.id.blob_expiry); + final TextView blobSize = headerView.findViewById(R.id.blob_size); blobLabel.setText(mBlobInfo.getLabel()); blobLabel.setTypeface(Typeface.DEFAULT_BOLD); blobId.setText(getString(R.string.blob_id_text, mBlobInfo.getId())); blobExpiry.setVisibility(View.GONE); + blobSize.setText(SharedDataUtils.formatSize(mBlobInfo.getSizeBytes())); return headerView; } diff --git a/src/com/android/settings/development/storage/SharedDataUtils.java b/src/com/android/settings/development/storage/SharedDataUtils.java index 2f48f6d41fa..e0c038a1cfe 100644 --- a/src/com/android/settings/development/storage/SharedDataUtils.java +++ b/src/com/android/settings/development/storage/SharedDataUtils.java @@ -39,4 +39,9 @@ class SharedDataUtils { CALENDAR.setTimeInMillis(millis); return FORMATTER.format(CALENDAR.getTime()); } + + static String formatSize(long sizeBytes) { + final double sizeInMb = sizeBytes / (1024.0 * 1024.0); + return String.format("%.2f MB", sizeInMb); + } } diff --git a/tests/robotests/src/com/android/settings/development/storage/SharedDataPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/storage/SharedDataPreferenceControllerTest.java index f11fb399689..c6a19c703e0 100644 --- a/tests/robotests/src/com/android/settings/development/storage/SharedDataPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/development/storage/SharedDataPreferenceControllerTest.java @@ -113,7 +113,8 @@ public class SharedDataPreferenceControllerTest { accessors.add(two); final List tmp = new ArrayList<>(); - tmp.add(new BlobInfo(10, System.currentTimeMillis(), "testing blob 1", accessors)); + tmp.add(new BlobInfo(10, System.currentTimeMillis(), "testing blob 1", 54 * 1024 * 1024, + accessors)); return tmp; } } From 543c9c6f2da9f32e89d81813043580c374ca9e94 Mon Sep 17 00:00:00 2001 From: Stanley Wang Date: Mon, 8 Jun 2020 19:33:51 +0800 Subject: [PATCH 2/7] Update "yes" string for German language. Remove the double quote in the string. Fixes: 156627009 Test: observe the UI Change-Id: I4659aa88a8f43df2477d5fe7b3dd60869c65f80d --- res/values-de/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index d33aeee28a7..21fae3ef9b2 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -16,7 +16,7 @@ - "\"Ja\"" + "Ja" "Nein" "Erstellen" "Zulassen" From 8fc0a24bc2af40e302ed3dec36920c32f517a105 Mon Sep 17 00:00:00 2001 From: Kholoud Mohamed Date: Mon, 8 Jun 2020 14:03:05 +0100 Subject: [PATCH 3/7] Add extra summary string in cross profiles page Fixes: 158227594 Test: manual testing Change-Id: Idd44c690c2a77503173e733a49bc59c1717cbdd5 --- res/values/strings.xml | 5 +++++ ...act_across_profiles_permissions_details.xml | 5 +++++ .../InteractAcrossProfilesDetails.java | 18 ++++++++++++++++-- 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index 910aba47c8d..887991942bd 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -8706,6 +8706,11 @@ to the user's IT admin. [CHAR LIMIT=NONE] --> Only connect apps if you trust them not to share personal data with your IT admin. + + You can disconnect apps anytime in your device\u2019s privacy settings. + diff --git a/res/xml/interact_across_profiles_permissions_details.xml b/res/xml/interact_across_profiles_permissions_details.xml index c40eaf542f6..bf0ea8fbfd9 100644 --- a/res/xml/interact_across_profiles_permissions_details.xml +++ b/res/xml/interact_across_profiles_permissions_details.xml @@ -38,4 +38,9 @@ + + diff --git a/src/com/android/settings/applications/specialaccess/interactacrossprofiles/InteractAcrossProfilesDetails.java b/src/com/android/settings/applications/specialaccess/interactacrossprofiles/InteractAcrossProfilesDetails.java index 1fe9fd62643..71d9d13adea 100644 --- a/src/com/android/settings/applications/specialaccess/interactacrossprofiles/InteractAcrossProfilesDetails.java +++ b/src/com/android/settings/applications/specialaccess/interactacrossprofiles/InteractAcrossProfilesDetails.java @@ -63,6 +63,8 @@ public class InteractAcrossProfilesDetails extends AppInfoBase "interact_across_profiles_settings_switch"; private static final String INTERACT_ACROSS_PROFILES_HEADER = "interact_across_profiles_header"; public static final String INSTALL_APP_BANNER_KEY = "install_app_banner"; + public static final String INTERACT_ACROSS_PROFILE_EXTRA_SUMMARY_KEY = + "interact_across_profiles_extra_summary"; public static final String EXTRA_SHOW_FRAGMENT_ARGS = ":settings:show_fragment_args"; public static final String INTENT_KEY = "intent"; @@ -79,6 +81,7 @@ public class InteractAcrossProfilesDetails extends AppInfoBase private boolean mInstalledInWork; private String mAppLabel; private Intent mInstallAppIntent; + private boolean mIsPageLaunchedByApp; @Override public void onCreate(Bundle savedInstanceState) { @@ -106,6 +109,8 @@ public class InteractAcrossProfilesDetails extends AppInfoBase mInstallBanner = findPreference(INSTALL_APP_BANNER_KEY); mInstallBanner.setOnPreferenceClickListener(this); + mIsPageLaunchedByApp = launchedByApp(); + // refreshUi checks that the user can still configure the appOp, return to the // previous page if it can't. if (!refreshUi()) { @@ -113,14 +118,23 @@ public class InteractAcrossProfilesDetails extends AppInfoBase } addAppTitleAndIcons(mPersonalProfile, mWorkProfile); styleActionBar(); + maybeShowExtraSummary(); logPageLaunchMetrics(); } + private void maybeShowExtraSummary() { + Preference extraSummary = findPreference(INTERACT_ACROSS_PROFILE_EXTRA_SUMMARY_KEY); + if (extraSummary == null) { + return; + } + extraSummary.setVisible(mIsPageLaunchedByApp); + } + private void logPageLaunchMetrics() { if (!mCrossProfileApps.canConfigureInteractAcrossProfiles(mPackageName)) { logNonConfigurableAppMetrics(); } - if (launchedByApp()) { + if (mIsPageLaunchedByApp) { logEvent(DevicePolicyEnums.CROSS_PROFILE_SETTINGS_PAGE_LAUNCHED_FROM_APP); } else { logEvent(DevicePolicyEnums.CROSS_PROFILE_SETTINGS_PAGE_LAUNCHED_FROM_SETTINGS); @@ -262,7 +276,7 @@ public class InteractAcrossProfilesDetails extends AppInfoBase logEvent(DevicePolicyEnums.CROSS_PROFILE_SETTINGS_PAGE_USER_CONSENTED); enableInteractAcrossProfiles(true); refreshUi(); - if (launchedByApp()) { + if (mIsPageLaunchedByApp) { setIntentAndFinish(/* appChanged= */ true); } } From a1933458c574646da3149f1952ae22529968c7fd Mon Sep 17 00:00:00 2001 From: Nate Myren Date: Mon, 8 Jun 2020 13:34:14 -0700 Subject: [PATCH 4/7] Add new description to Permission manager in settings Fixes: 158125093 Test: Navigate to "Permission manager" in settings (both in privacy, and in apps & notifications), and verify the summary says "control app access to your data". Change-Id: I43f7f38dde119bad96ec9d30a43129e7cacf752a --- res/values/strings.xml | 3 +++ res/xml/app_and_notification.xml | 4 ++-- res/xml/privacy_dashboard_settings.xml | 5 ++--- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index 910aba47c8d..975a8fa85cc 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -9491,6 +9491,9 @@ No permissions requested + + Control app access to your data + All apps diff --git a/res/xml/app_and_notification.xml b/res/xml/app_and_notification.xml index 6e71f143ad9..98b98442b21 100644 --- a/res/xml/app_and_notification.xml +++ b/res/xml/app_and_notification.xml @@ -77,9 +77,9 @@ + settings:keywords="@string/keywords_app_permissions"> diff --git a/res/xml/privacy_dashboard_settings.xml b/res/xml/privacy_dashboard_settings.xml index 81a6d09c65d..c18a2363c44 100644 --- a/res/xml/privacy_dashboard_settings.xml +++ b/res/xml/privacy_dashboard_settings.xml @@ -52,10 +52,9 @@ + settings:searchable="false"> From d1a7a5618ef86588c6a5c05ae4604b97c11b755e Mon Sep 17 00:00:00 2001 From: Stanley Wang Date: Wed, 20 May 2020 20:55:11 +0800 Subject: [PATCH 5/7] Add the "Smart Lock" item to dynamic index. - The "Smart Lock" item is a trust agent which comes from TrustAgentManager, so add it to dynamic index. Fixes: 148867137 Test: manual test the search result and run Settings robotest Change-Id: I7cd3a9df89a9b9378fa49cc2cb2127c778b795f2 --- .../TrustAgentListPreferenceController.java | 61 +++++++++++++++---- ...rustAgentListPreferenceControllerTest.java | 35 ++++++++++- 2 files changed, 81 insertions(+), 15 deletions(-) diff --git a/src/com/android/settings/security/trustagent/TrustAgentListPreferenceController.java b/src/com/android/settings/security/trustagent/TrustAgentListPreferenceController.java index eb50b7c0b37..6067b77e59f 100644 --- a/src/com/android/settings/security/trustagent/TrustAgentListPreferenceController.java +++ b/src/com/android/settings/security/trustagent/TrustAgentListPreferenceController.java @@ -44,6 +44,7 @@ import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnCreate; import com.android.settingslib.core.lifecycle.events.OnResume; import com.android.settingslib.core.lifecycle.events.OnSaveInstanceState; +import com.android.settingslib.search.SearchIndexableRaw; import java.util.List; @@ -134,34 +135,68 @@ public class TrustAgentListPreferenceController extends AbstractPreferenceContro updateTrustAgents(); } + + @Override + public void updateDynamicRawDataToIndex(List rawData) { + if (!isAvailable()) { + return; + } + + final List agents = getActiveTrustAgents( + mContext); + if (agents == null) { + return; + } + + for (int i = 0, size = agents.size(); i < size; i++) { + final SearchIndexableRaw raw = new SearchIndexableRaw(mContext); + final TrustAgentManager.TrustAgentComponentInfo agent = agents.get(i); + + raw.key = PREF_KEY_TRUST_AGENT + i; + raw.title = agent.title; + rawData.add(raw); + } + } + + /** + * @return The active trust agents from TrustAgentManager. + */ + private List getActiveTrustAgents(Context context) { + return mTrustAgentManager.getActiveTrustAgents(context, mLockPatternUtils); + } + private void updateTrustAgents() { if (mSecurityCategory == null) { return; } + // If for some reason the preference is no longer available, don't proceed to add. + if (!isAvailable()) { + return; + } + final List agents = getActiveTrustAgents( + mContext); + if (agents == null) { + return; + } + // First remove all old trust agents. - while (true) { - final Preference oldAgent = mSecurityCategory.findPreference(PREF_KEY_TRUST_AGENT); + for (int i = 0, size = agents.size(); i < size; i++) { + String key = PREF_KEY_TRUST_AGENT + i; + final Preference oldAgent = mSecurityCategory.findPreference(key); if (oldAgent == null) { break; } else { mSecurityCategory.removePreference(oldAgent); } } - // If for some reason the preference is no longer available, don't proceed to add. - if (!isAvailable()) { - return; - } + // Then add new ones. final boolean hasSecurity = mLockPatternUtils.isSecure(MY_USER_ID); - final List agents = - mTrustAgentManager.getActiveTrustAgents(mContext, mLockPatternUtils); - if (agents == null) { - return; - } - for (TrustAgentManager.TrustAgentComponentInfo agent : agents) { + for (int i = 0, size = agents.size(); i < size; i++) { final RestrictedPreference trustAgentPreference = new RestrictedPreference(mSecurityCategory.getContext()); - trustAgentPreference.setKey(PREF_KEY_TRUST_AGENT); + TrustAgentManager.TrustAgentComponentInfo agent = agents.get(i); + trustAgentPreference.setKey(PREF_KEY_TRUST_AGENT + i); trustAgentPreference.setTitle(agent.title); trustAgentPreference.setSummary(agent.summary); // Create intent for this preference. diff --git a/tests/robotests/src/com/android/settings/security/trustagent/TrustAgentListPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/security/trustagent/TrustAgentListPreferenceControllerTest.java index d9202d437f5..c0fbff79358 100644 --- a/tests/robotests/src/com/android/settings/security/trustagent/TrustAgentListPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/security/trustagent/TrustAgentListPreferenceControllerTest.java @@ -44,6 +44,7 @@ import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.security.SecuritySettings; import com.android.settings.testutils.FakeFeatureFactory; import com.android.settingslib.core.lifecycle.Lifecycle; +import com.android.settingslib.search.SearchIndexableRaw; import org.junit.Before; import org.junit.Test; @@ -111,10 +112,20 @@ public class TrustAgentListPreferenceControllerTest { @Test public void onResume_shouldClearOldAgents() { final Preference oldAgent = new Preference(mActivity); - oldAgent.setKey(PREF_KEY_TRUST_AGENT); - when(mCategory.findPreference(PREF_KEY_TRUST_AGENT)) + oldAgent.setKey(PREF_KEY_TRUST_AGENT + 0); + when(mCategory.findPreference(PREF_KEY_TRUST_AGENT + 0)) .thenReturn(oldAgent) .thenReturn(null); + final List agents = new ArrayList<>(); + final TrustAgentManager.TrustAgentComponentInfo agent = + mock(TrustAgentManager.TrustAgentComponentInfo.class); + agent.title = "Test_title"; + agent.summary = "test summary"; + agent.componentName = new ComponentName("pkg", "agent"); + agent.admin = null; + agents.add(agent); + when(mTrustAgentManager.getActiveTrustAgents(mActivity, mLockPatternUtils)) + .thenReturn(agents); mController.displayPreference(mScreen); mController.onResume(); @@ -160,4 +171,24 @@ public class TrustAgentListPreferenceControllerTest { verify(mCategory, never()).addPreference(any(Preference.class)); } + + @Test + public void updateDynamicRawDataToIndex_shouldIndexAgents() { + final List agents = new ArrayList<>(); + final TrustAgentManager.TrustAgentComponentInfo agent = + mock(TrustAgentManager.TrustAgentComponentInfo.class); + agent.title = "Test_title"; + agent.summary = "test summary"; + agent.componentName = new ComponentName("pkg", "agent"); + agent.admin = null; + agents.add(agent); + when(mTrustAgentManager.getActiveTrustAgents(mActivity, mLockPatternUtils)) + .thenReturn(agents); + final List indexRaws = new ArrayList<>(); + + mController.updateDynamicRawDataToIndex(indexRaws); + + assertThat(indexRaws).hasSize(1); + } + } From 1633ae37e7774c6103ecf19570f0e02c108032a7 Mon Sep 17 00:00:00 2001 From: Robert Luo Date: Fri, 15 May 2020 13:03:09 +0800 Subject: [PATCH 6/7] Apply BLUETOOTH_ADMIN permission for BluetoothDeviceDetailActivity Bug: 156696236 Test: 1. Manual 2. make -j42 RunSettingsRoboTests Change-Id: Icbc5879301fec9a7deacd7ee2896fd41b6feab7a Merged-In: Icbc5879301fec9a7deacd7ee2896fd41b6feab7a --- AndroidManifest.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 6e0771cc412..4f3caed4285 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -3181,7 +3181,7 @@ + android:permission="android.permission.BLUETOOTH_ADMIN"> From f71eed162d5e4e854b6b1f63bd98abbffbe584d7 Mon Sep 17 00:00:00 2001 From: Sarah Chin Date: Fri, 5 Jun 2020 16:29:21 -0700 Subject: [PATCH 7/7] Add logic for 5G icon to SIM status dialog Test: manual test with fake 5G data network type Bug: 156815536 Change-Id: I764f4ade8032511b44098e7eccb19b909fccc717 --- .../simstatus/SimStatusDialogController.java | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java b/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java index fc6811a81a9..a05d87db804 100644 --- a/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java +++ b/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java @@ -42,6 +42,7 @@ import android.telephony.SignalStrength; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; import android.telephony.SubscriptionManager.OnSubscriptionsChangedListener; +import android.telephony.TelephonyDisplayInfo; import android.telephony.TelephonyManager; import android.telephony.UiccCardInfo; import android.telephony.euicc.EuiccManager; @@ -138,6 +139,7 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O }; private SubscriptionInfo mSubscriptionInfo; + private TelephonyDisplayInfo mTelephonyDisplayInfo; private final int mSlotIndex; private TelephonyManager mTelephonyManager; @@ -269,7 +271,8 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_DATA_CONNECTION_STATE | PhoneStateListener.LISTEN_SIGNAL_STRENGTHS - | PhoneStateListener.LISTEN_SERVICE_STATE); + | PhoneStateListener.LISTEN_SERVICE_STATE + | PhoneStateListener.LISTEN_DISPLAY_INFO_CHANGED); mSubscriptionManager.addOnSubscriptionsChangedListener( mContext.getMainExecutor(), mOnSubscriptionsChangedListener); registerImsRegistrationCallback(mSubscriptionInfo.getSubscriptionId()); @@ -493,6 +496,7 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O } private void updateNetworkType() { + // TODO: all of this should be based on TelephonyDisplayInfo instead of just the 5G logic if (mSubscriptionInfo == null) { final String unknownNetworkType = getNetworkTypeName(TelephonyManager.NETWORK_TYPE_UNKNOWN); @@ -507,6 +511,10 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O final int subId = mSubscriptionInfo.getSubscriptionId(); final int actualDataNetworkType = mTelephonyManager.getDataNetworkType(); final int actualVoiceNetworkType = mTelephonyManager.getVoiceNetworkType(); + final int overrideNetworkType = mTelephonyDisplayInfo == null + ? TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NONE + : mTelephonyDisplayInfo.getOverrideNetworkType(); + if (TelephonyManager.NETWORK_TYPE_UNKNOWN != actualDataNetworkType) { dataNetworkTypeName = getNetworkTypeName(actualDataNetworkType); } @@ -514,6 +522,12 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O voiceNetworkTypeName = getNetworkTypeName(actualVoiceNetworkType); } + if (overrideNetworkType == TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NR_NSA_MMWAVE + || overrideNetworkType == TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NR_NSA) { + dataNetworkTypeName = "NR NSA"; + voiceNetworkTypeName = "NR NSA"; + } + boolean show4GForLTE = false; final PersistableBundle carrierConfig = mCarrierConfigManager.getConfigForSubId(subId); if (carrierConfig != null) { @@ -743,6 +757,12 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O updateServiceState(serviceState); updateRoamingStatus(serviceState); } + + @Override + public void onDisplayInfoChanged(@NonNull TelephonyDisplayInfo displayInfo) { + mTelephonyDisplayInfo = displayInfo; + updateNetworkType(); + } }; } @@ -788,7 +808,7 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O // case TelephonyManager.NETWORK_TYPE_LTE_CA: // return "LTE_CA"; case TelephonyManager.NETWORK_TYPE_NR: - return "NR"; + return "NR SA"; default: return "UNKNOWN"; }