From 378de71cb4d77e3acdb2e0d60f6362b27a212594 Mon Sep 17 00:00:00 2001 From: yomna Date: Sat, 7 Dec 2024 04:57:28 +0000 Subject: [PATCH] Check for any valid SIM card before showing Cellular Security Settings Bug: 377358721 Test: m Flag: EXEMPT bugfix Change-Id: I5bbc0c95ff420639c274534b9086a3479ca47fb2 --- .../network/CellularSecurityPreferenceController.java | 10 ++++++++++ .../CellularSecurityEncryptionDividerController.java | 11 +++++++++++ ...ellularSecurityNotificationsDividerController.java | 10 ++++++++++ ...ularSecurityNotificationsPreferenceController.java | 11 +++++++++++ 4 files changed, 42 insertions(+) diff --git a/src/com/android/settings/network/CellularSecurityPreferenceController.java b/src/com/android/settings/network/CellularSecurityPreferenceController.java index e515339c68c..a184553c0f3 100644 --- a/src/com/android/settings/network/CellularSecurityPreferenceController.java +++ b/src/com/android/settings/network/CellularSecurityPreferenceController.java @@ -23,6 +23,7 @@ import android.content.pm.PackageManager; import android.os.Build; import android.os.Bundle; import android.safetycenter.SafetyCenterManager; +import android.telephony.SubscriptionInfo; import android.telephony.TelephonyManager; import android.text.TextUtils; import android.util.Log; @@ -38,6 +39,8 @@ import com.android.settings.core.BasePreferenceController; import com.android.settings.core.SubSettingLauncher; import com.android.settings.network.telephony.CellularSecuritySettingsFragment; +import java.util.List; + /** * {@link BasePreferenceController} for accessing Cellular Security settings from Network & * Internet Settings menu. @@ -78,6 +81,13 @@ public class CellularSecurityPreferenceController extends BasePreferenceControll mTelephonyManager = mContext.getSystemService(TelephonyManager.class); } + // Check there are valid SIM cards which can be displayed to the user, otherwise this + // settings should not be shown. + List availableSubs = SubscriptionUtil.getAvailableSubscriptions(mContext); + if (availableSubs.isEmpty()) { + return CONDITIONALLY_UNAVAILABLE; + } + boolean isNullCipherDisablementAvailable = false; boolean areCellSecNotificationsAvailable = false; try { diff --git a/src/com/android/settings/network/telephony/CellularSecurityEncryptionDividerController.java b/src/com/android/settings/network/telephony/CellularSecurityEncryptionDividerController.java index f54984703cc..7b3742318b5 100644 --- a/src/com/android/settings/network/telephony/CellularSecurityEncryptionDividerController.java +++ b/src/com/android/settings/network/telephony/CellularSecurityEncryptionDividerController.java @@ -17,6 +17,7 @@ package com.android.settings.network.telephony; import android.content.Context; +import android.telephony.SubscriptionInfo; import android.telephony.TelephonyManager; import android.util.Log; @@ -25,6 +26,9 @@ import androidx.annotation.NonNull; import com.android.internal.telephony.flags.FeatureFlags; import com.android.internal.telephony.flags.FeatureFlagsImpl; import com.android.settings.core.BasePreferenceController; +import com.android.settings.network.SubscriptionUtil; + +import java.util.List; /** * {@link BasePreferenceController} for visibility of Encryption divider on Cellular Security @@ -58,6 +62,13 @@ public class CellularSecurityEncryptionDividerController extends mTelephonyManager = mContext.getSystemService(TelephonyManager.class); } + // Check there are valid SIM cards which can be displayed to the user, otherwise this + // settings should not be shown. + List availableSubs = SubscriptionUtil.getAvailableSubscriptions(mContext); + if (availableSubs.isEmpty()) { + return CONDITIONALLY_UNAVAILABLE; + } + try { mTelephonyManager.isNullCipherAndIntegrityPreferenceEnabled(); } catch (UnsupportedOperationException e) { diff --git a/src/com/android/settings/network/telephony/CellularSecurityNotificationsDividerController.java b/src/com/android/settings/network/telephony/CellularSecurityNotificationsDividerController.java index 8391ab5df48..131882704f5 100644 --- a/src/com/android/settings/network/telephony/CellularSecurityNotificationsDividerController.java +++ b/src/com/android/settings/network/telephony/CellularSecurityNotificationsDividerController.java @@ -19,6 +19,7 @@ package com.android.settings.network.telephony; import android.content.Context; import android.os.Build; import android.safetycenter.SafetyCenterManager; +import android.telephony.SubscriptionInfo; import android.telephony.TelephonyManager; import android.util.Log; @@ -27,6 +28,9 @@ import androidx.annotation.VisibleForTesting; import com.android.internal.telephony.flags.Flags; import com.android.settings.core.BasePreferenceController; +import com.android.settings.network.SubscriptionUtil; + +import java.util.List; /** * {@link BasePreferenceController} for visibility of Notifications divider on Cellular Security @@ -69,6 +73,12 @@ public class CellularSecurityNotificationsDividerController extends Log.w(LOG_TAG, "Telephony manager not yet initialized"); mTelephonyManager = mContext.getSystemService(TelephonyManager.class); } + // Check there are valid SIM cards which can be displayed to the user, otherwise this + // settings should not be shown. + List availableSubs = SubscriptionUtil.getAvailableSubscriptions(mContext); + if (availableSubs.isEmpty()) { + return CONDITIONALLY_UNAVAILABLE; + } // Checking for hardware support, i.e. IRadio AIDL version must be >= 2.2 try { // Must call both APIs, as we can't use the combined toggle if both aren't available diff --git a/src/com/android/settings/network/telephony/CellularSecurityNotificationsPreferenceController.java b/src/com/android/settings/network/telephony/CellularSecurityNotificationsPreferenceController.java index 035a5b2a33b..4e2d285b8d5 100644 --- a/src/com/android/settings/network/telephony/CellularSecurityNotificationsPreferenceController.java +++ b/src/com/android/settings/network/telephony/CellularSecurityNotificationsPreferenceController.java @@ -19,6 +19,7 @@ package com.android.settings.network.telephony; import android.content.Context; import android.os.Build; import android.safetycenter.SafetyCenterManager; +import android.telephony.SubscriptionInfo; import android.telephony.TelephonyManager; import android.util.Log; @@ -26,6 +27,9 @@ import androidx.annotation.NonNull; import androidx.annotation.VisibleForTesting; import com.android.internal.telephony.flags.Flags; +import com.android.settings.network.SubscriptionUtil; + +import java.util.List; /** * {@link TelephonyTogglePreferenceController} for accessing Cellular Security settings through @@ -75,6 +79,13 @@ public class CellularSecurityNotificationsPreferenceController extends return UNSUPPORTED_ON_DEVICE; } + // Check there are valid SIM cards which can be displayed to the user, otherwise this + // setting should not be shown. + List availableSubs = SubscriptionUtil.getAvailableSubscriptions(mContext); + if (availableSubs.isEmpty()) { + return CONDITIONALLY_UNAVAILABLE; + } + // Checking for hardware support, i.e. IRadio AIDL version must be >= 2.2 try { areNotificationsEnabled();