diff --git a/res/values/config.xml b/res/values/config.xml
index 93d82a8c6f3..205b9b5baa5 100755
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -636,4 +636,8 @@
false
+
+
+ true
+
diff --git a/res/xml/my_device_info.xml b/res/xml/my_device_info.xml
index 9547318a86e..9b804104e56 100644
--- a/res/xml/my_device_info.xml
+++ b/res/xml/my_device_info.xml
@@ -58,6 +58,7 @@
android:title="@string/status_number"
android:summary="@string/summary_placeholder"
android:selectable="false"
+ settings:isPreferenceVisible="@bool/config_show_sim_info"
settings:controller="com.android.settings.deviceinfo.PhoneNumberPreferenceController"
settings:enableCopying="true"/>
@@ -99,6 +100,7 @@
android:title="@string/sim_status_title"
settings:keywords="@string/keywords_sim_status"
android:summary="@string/summary_placeholder"
+ settings:isPreferenceVisible="@bool/config_show_sim_info"
settings:enableCopying="true"/>
@@ -120,6 +122,7 @@
android:summary="@string/summary_placeholder"
settings:keywords="@string/keywords_imei_info"
settings:enableCopying="true"
+ settings:isPreferenceVisible="@bool/config_show_sim_info"
settings:controller="com.android.settings.deviceinfo.imei.ImeiInfoPreferenceController"/>
diff --git a/res/xml/network_provider_internet.xml b/res/xml/network_provider_internet.xml
index 07e797a07c1..c9c576e6b1b 100644
--- a/res/xml/network_provider_internet.xml
+++ b/res/xml/network_provider_internet.xml
@@ -37,6 +37,7 @@
android:icon="@drawable/ic_calls_sms"
android:order="-20"
android:summary="@string/summary_placeholder"
+ settings:isPreferenceVisible="@bool/config_show_sim_info"
settings:allowDividerBelow="true"
settings:keywords="@string/calls_and_sms"
settings:useAdminDisabledSummary="true" />
@@ -49,6 +50,7 @@
android:order="-15"
settings:keywords="@string/keywords_more_mobile_networks"
settings:userRestriction="no_config_mobile_networks"
+ settings:isPreferenceVisible="@bool/config_show_sim_info"
settings:allowDividerAbove="true"
settings:useAdminDisabledSummary="true" />
@@ -66,6 +68,7 @@
android:persistent="false"
android:order="19"
settings:userRestriction="no_config_mobile_networks"
+ settings:isPreferenceVisible="@bool/config_show_sim_info"
settings:useAdminDisabledSummary="true" />
diff --git a/res/xml/security_advanced_settings.xml b/res/xml/security_advanced_settings.xml
index 6d43fe77451..b36fc73fdd2 100644
--- a/res/xml/security_advanced_settings.xml
+++ b/res/xml/security_advanced_settings.xml
@@ -64,6 +64,7 @@
android:order="50"
android:key="sim_lock_settings"
android:title="@string/sim_lock_settings_category"
+ settings:isPreferenceVisible="@bool/config_show_sim_info"
settings:controller="com.android.settings.security.SimLockPreferenceController">
diff --git a/src/com/android/settings/IccLockSettings.java b/src/com/android/settings/IccLockSettings.java
index 71eb0f20e30..8e54e3196f7 100644
--- a/src/com/android/settings/IccLockSettings.java
+++ b/src/com/android/settings/IccLockSettings.java
@@ -174,8 +174,9 @@ public class IccLockSettings extends SettingsPreferenceFragment
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- if (Utils.isMonkeyRunning()) {
- finish();
+ if (Utils.isMonkeyRunning() ||
+ !SubscriptionUtil.isSimHardwareVisible(getContext())) {
+ finishFragment();
return;
}
diff --git a/src/com/android/settings/MainClear.java b/src/com/android/settings/MainClear.java
index 2b0f01036ea..1434d7216a9 100644
--- a/src/com/android/settings/MainClear.java
+++ b/src/com/android/settings/MainClear.java
@@ -64,6 +64,7 @@ import androidx.annotation.VisibleForTesting;
import com.android.settings.core.InstrumentedFragment;
import com.android.settings.enterprise.ActionDisabledByAdminDialogHelper;
+import com.android.settings.network.SubscriptionUtil;
import com.android.settings.password.ChooseLockSettingsHelper;
import com.android.settings.password.ConfirmLockPattern;
import com.android.settingslib.RestrictedLockUtilsInternal;
@@ -381,6 +382,14 @@ public class MainClear extends InstrumentedFragment implements OnGlobalLayoutLis
mScrollView.getViewTreeObserver().addOnGlobalLayoutListener(this);
}
+ /**
+ * Whether to show any UI which is SIM related.
+ */
+ @VisibleForTesting
+ boolean showAnySubscriptionInfo(Context context) {
+ return (context != null) && SubscriptionUtil.isSimHardwareVisible(context);
+ }
+
/**
* Whether to show strings indicating that the eUICC will be wiped.
*
@@ -390,7 +399,7 @@ public class MainClear extends InstrumentedFragment implements OnGlobalLayoutLis
@VisibleForTesting
boolean showWipeEuicc() {
Context context = getContext();
- if (!isEuiccEnabled(context)) {
+ if (!showAnySubscriptionInfo(context) || !isEuiccEnabled(context)) {
return false;
}
ContentResolver cr = context.getContentResolver();
diff --git a/src/com/android/settings/ResetNetwork.java b/src/com/android/settings/ResetNetwork.java
index 7e58c0b9808..1529a237237 100644
--- a/src/com/android/settings/ResetNetwork.java
+++ b/src/com/android/settings/ResetNetwork.java
@@ -239,6 +239,9 @@ public class ResetNetwork extends InstrumentedFragment {
}
private List getActiveSubscriptionInfoList() {
+ if (!SubscriptionUtil.isSimHardwareVisible(getActivity())) {
+ return Collections.emptyList();
+ }
SubscriptionManager mgr = getActivity().getSystemService(SubscriptionManager.class);
if (mgr == null) {
Log.w(TAG, "No SubscriptionManager");
diff --git a/src/com/android/settings/deviceinfo/PhoneNumberPreferenceController.java b/src/com/android/settings/deviceinfo/PhoneNumberPreferenceController.java
index 99c572d527e..5b247f88c2b 100644
--- a/src/com/android/settings/deviceinfo/PhoneNumberPreferenceController.java
+++ b/src/com/android/settings/deviceinfo/PhoneNumberPreferenceController.java
@@ -29,6 +29,7 @@ import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
+import com.android.settings.network.SubscriptionUtil;
import com.android.settingslib.DeviceInfoUtils;
import java.util.ArrayList;
@@ -51,7 +52,8 @@ public class PhoneNumberPreferenceController extends BasePreferenceController {
@Override
public int getAvailabilityStatus() {
- return mTelephonyManager.isVoiceCapable() ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
+ return SubscriptionUtil.isSimHardwareVisible(mContext) ?
+ AVAILABLE : UNSUPPORTED_ON_DEVICE;
}
@Override
@@ -62,6 +64,9 @@ public class PhoneNumberPreferenceController extends BasePreferenceController {
@Override
public void displayPreference(PreferenceScreen screen) {
super.displayPreference(screen);
+ if (!SubscriptionUtil.isSimHardwareVisible(mContext)) {
+ return;
+ }
final Preference preference = screen.findPreference(getPreferenceKey());
final PreferenceCategory category = screen.findPreference(KEY_PREFERENCE_CATEGORY);
mPreferenceList.add(preference);
diff --git a/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceController.java b/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceController.java
index 027e8c806ca..d6f8a513e28 100644
--- a/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceController.java
+++ b/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceController.java
@@ -33,6 +33,7 @@ import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.deviceinfo.PhoneNumberSummaryPreference;
+import com.android.settings.network.SubscriptionUtil;
import com.android.settingslib.Utils;
import java.util.ArrayList;
@@ -63,6 +64,9 @@ public class ImeiInfoPreferenceController extends BasePreferenceController {
@Override
public void displayPreference(PreferenceScreen screen) {
super.displayPreference(screen);
+ if (!SubscriptionUtil.isSimHardwareVisible(mContext)) {
+ return;
+ }
final Preference preference = screen.findPreference(getPreferenceKey());
final PreferenceCategory category = screen.findPreference(KEY_PREFERENCE_CATEGORY);
@@ -118,7 +122,8 @@ public class ImeiInfoPreferenceController extends BasePreferenceController {
@Override
public int getAvailabilityStatus() {
- return mContext.getSystemService(UserManager.class).isAdminUser()
+ return SubscriptionUtil.isSimHardwareVisible(mContext) &&
+ mContext.getSystemService(UserManager.class).isAdminUser()
&& !Utils.isWifiOnly(mContext) ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
}
diff --git a/src/com/android/settings/deviceinfo/simstatus/SimStatusPreferenceController.java b/src/com/android/settings/deviceinfo/simstatus/SimStatusPreferenceController.java
index 4204ec14f9e..96f8b62d23f 100644
--- a/src/com/android/settings/deviceinfo/simstatus/SimStatusPreferenceController.java
+++ b/src/com/android/settings/deviceinfo/simstatus/SimStatusPreferenceController.java
@@ -29,6 +29,7 @@ import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.core.PreferenceControllerMixin;
+import com.android.settings.network.SubscriptionUtil;
import com.android.settingslib.deviceinfo.AbstractSimStatusImeiInfoPreferenceController;
import java.util.ArrayList;
@@ -59,9 +60,18 @@ public class SimStatusPreferenceController extends
return KEY_SIM_STATUS;
}
+ @Override
+ public boolean isAvailable() {
+ return SubscriptionUtil.isSimHardwareVisible(mContext) &&
+ super.isAvailable();
+ }
+
@Override
public void displayPreference(PreferenceScreen screen) {
super.displayPreference(screen);
+ if (!SubscriptionUtil.isSimHardwareVisible(mContext)) {
+ return;
+ }
final Preference preference = screen.findPreference(getPreferenceKey());
if (!isAvailable() || preference == null || !preference.isVisible()) {
return;
diff --git a/src/com/android/settings/network/EraseEuiccDataController.java b/src/com/android/settings/network/EraseEuiccDataController.java
index b1f964b2190..091b6d7748c 100644
--- a/src/com/android/settings/network/EraseEuiccDataController.java
+++ b/src/com/android/settings/network/EraseEuiccDataController.java
@@ -51,7 +51,8 @@ public class EraseEuiccDataController extends BasePreferenceController {
@Override
public int getAvailabilityStatus() {
- return mContext.getPackageManager().hasSystemFeature(
+ return SubscriptionUtil.isSimHardwareVisible(mContext) &&
+ mContext.getPackageManager().hasSystemFeature(
PackageManager.FEATURE_TELEPHONY_EUICC) ? AVAILABLE_UNSEARCHABLE
: UNSUPPORTED_ON_DEVICE;
}
diff --git a/src/com/android/settings/network/MobileNetworkListFragment.java b/src/com/android/settings/network/MobileNetworkListFragment.java
index 7881690e106..ea7031ae132 100644
--- a/src/com/android/settings/network/MobileNetworkListFragment.java
+++ b/src/com/android/settings/network/MobileNetworkListFragment.java
@@ -60,6 +60,10 @@ public class MobileNetworkListFragment extends DashboardFragment {
@Override
protected List createPreferenceControllers(Context context) {
final List controllers = new ArrayList<>();
+ if (!SubscriptionUtil.isSimHardwareVisible(getContext())) {
+ finish();
+ return controllers;
+ }
NetworkProviderSimsCategoryController simCategoryPrefCtrl =
new NetworkProviderSimsCategoryController(context, KEY_PREFERENCE_CATEGORY_SIM,
@@ -88,7 +92,8 @@ public class MobileNetworkListFragment extends DashboardFragment {
@Override
protected boolean isPageSearchEnabled(Context context) {
- return context.getSystemService(UserManager.class).isAdminUser();
+ return SubscriptionUtil.isSimHardwareVisible(context) &&
+ context.getSystemService(UserManager.class).isAdminUser();
}
};
}
diff --git a/src/com/android/settings/network/MobileNetworkSummaryController.java b/src/com/android/settings/network/MobileNetworkSummaryController.java
index 1a85a7fa341..61dd079cb35 100644
--- a/src/com/android/settings/network/MobileNetworkSummaryController.java
+++ b/src/com/android/settings/network/MobileNetworkSummaryController.java
@@ -206,7 +206,8 @@ public class MobileNetworkSummaryController extends AbstractPreferenceController
@Override
public boolean isAvailable() {
- return !Utils.isWifiOnly(mContext) && mUserManager.isAdminUser();
+ return SubscriptionUtil.isSimHardwareVisible(mContext) &&
+ !Utils.isWifiOnly(mContext) && mUserManager.isAdminUser();
}
@Override
diff --git a/src/com/android/settings/network/NetworkProviderCallsSmsController.java b/src/com/android/settings/network/NetworkProviderCallsSmsController.java
index c8b1c49b7bf..585c99e0bbe 100644
--- a/src/com/android/settings/network/NetworkProviderCallsSmsController.java
+++ b/src/com/android/settings/network/NetworkProviderCallsSmsController.java
@@ -190,7 +190,8 @@ public class NetworkProviderCallsSmsController extends AbstractPreferenceControl
@Override
public boolean isAvailable() {
- return mUserManager.isAdminUser();
+ return SubscriptionUtil.isSimHardwareVisible(mContext) &&
+ mUserManager.isAdminUser();
}
@Override
diff --git a/src/com/android/settings/network/NetworkProviderCallsSmsFragment.java b/src/com/android/settings/network/NetworkProviderCallsSmsFragment.java
index aad9b10403c..b2cf74e0a82 100644
--- a/src/com/android/settings/network/NetworkProviderCallsSmsFragment.java
+++ b/src/com/android/settings/network/NetworkProviderCallsSmsFragment.java
@@ -100,7 +100,8 @@ public class NetworkProviderCallsSmsFragment extends DashboardFragment {
@Override
protected boolean isPageSearchEnabled(Context context) {
- return context.getSystemService(UserManager.class).isAdminUser();
+ return SubscriptionUtil.isSimHardwareVisible(context) &&
+ context.getSystemService(UserManager.class).isAdminUser();
}
};
}
diff --git a/src/com/android/settings/network/NetworkProviderSettings.java b/src/com/android/settings/network/NetworkProviderSettings.java
index c5295e67d88..19ebd36d881 100644
--- a/src/com/android/settings/network/NetworkProviderSettings.java
+++ b/src/com/android/settings/network/NetworkProviderSettings.java
@@ -342,7 +342,18 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
}
}
+ /**
+ * Whether to show any UI which is SIM related.
+ */
+ @VisibleForTesting
+ boolean showAnySubscriptionInfo(Context context) {
+ return (context != null) && SubscriptionUtil.isSimHardwareVisible(context);
+ }
+
private void addNetworkMobileProviderController() {
+ if (!showAnySubscriptionInfo(getContext())) {
+ return;
+ }
if (mNetworkMobileProviderController == null) {
mNetworkMobileProviderController = new NetworkMobileProviderController(
getContext(), PREF_KEY_PROVIDER_MOBILE_NETWORK);
diff --git a/src/com/android/settings/network/SubscriptionUtil.java b/src/com/android/settings/network/SubscriptionUtil.java
index 0bba86fafed..ccfcfb0a752 100644
--- a/src/com/android/settings/network/SubscriptionUtil.java
+++ b/src/com/android/settings/network/SubscriptionUtil.java
@@ -86,6 +86,14 @@ public class SubscriptionUtil {
return subscriptions;
}
+ /**
+ * Check if SIM hardware is visible to the end user.
+ */
+ public static boolean isSimHardwareVisible(Context context) {
+ return context.getResources()
+ .getBoolean(R.bool.config_show_sim_info);
+ }
+
@VisibleForTesting
static boolean isInactiveInsertedPSim(UiccSlotInfo slotInfo) {
if (slotInfo == null) {
diff --git a/src/com/android/settings/network/telephony/MobileNetworkSettings.java b/src/com/android/settings/network/telephony/MobileNetworkSettings.java
index 94b6aaf1bcc..05e58e96ed7 100644
--- a/src/com/android/settings/network/telephony/MobileNetworkSettings.java
+++ b/src/com/android/settings/network/telephony/MobileNetworkSettings.java
@@ -120,6 +120,10 @@ public class MobileNetworkSettings extends AbstractMobileNetworkSettings {
@Override
protected List createPreferenceControllers(Context context) {
+ if (!SubscriptionUtil.isSimHardwareVisible(context)) {
+ finish();
+ return Arrays.asList();
+ }
if (getArguments() == null) {
Intent intent = getIntent();
if (intent != null) {
@@ -398,7 +402,8 @@ public class MobileNetworkSettings extends AbstractMobileNetworkSettings {
/** suppress full page if user is not admin */
@Override
protected boolean isPageSearchEnabled(Context context) {
- return context.getSystemService(UserManager.class).isAdminUser();
+ return SubscriptionUtil.isSimHardwareVisible(context) &&
+ context.getSystemService(UserManager.class).isAdminUser();
}
};
diff --git a/src/com/android/settings/network/telephony/MobileNetworkUtils.java b/src/com/android/settings/network/telephony/MobileNetworkUtils.java
index e769a4eed7d..8305c4a20da 100644
--- a/src/com/android/settings/network/telephony/MobileNetworkUtils.java
+++ b/src/com/android/settings/network/telephony/MobileNetworkUtils.java
@@ -263,6 +263,9 @@ public class MobileNetworkUtils {
* the user has enabled development mode.
*/
public static boolean showEuiccSettings(Context context) {
+ if (!SubscriptionUtil.isSimHardwareVisible(context)) {
+ return false;
+ }
long timeForAccess = SystemClock.elapsedRealtime();
try {
Boolean isShow = ((Future) ThreadUtils.postOnBackgroundThread(() -> {
diff --git a/src/com/android/settings/security/SimLockPreferenceController.java b/src/com/android/settings/security/SimLockPreferenceController.java
index 6f663c2409c..3057c987ee2 100644
--- a/src/com/android/settings/security/SimLockPreferenceController.java
+++ b/src/com/android/settings/security/SimLockPreferenceController.java
@@ -28,6 +28,7 @@ import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
import com.android.settings.core.BasePreferenceController;
+import com.android.settings.network.SubscriptionUtil;
import java.util.List;
@@ -50,6 +51,10 @@ public class SimLockPreferenceController extends BasePreferenceController {
@Override
public int getAvailabilityStatus() {
+ if (!SubscriptionUtil.isSimHardwareVisible(mContext)) {
+ return UNSUPPORTED_ON_DEVICE;
+ }
+
final List subInfoList =
mSubscriptionManager.getActiveSubscriptionInfoList();
diff --git a/src/com/android/settings/sim/SimDialogActivity.java b/src/com/android/settings/sim/SimDialogActivity.java
index 9c4f8f18915..464ba9b4a51 100644
--- a/src/com/android/settings/sim/SimDialogActivity.java
+++ b/src/com/android/settings/sim/SimDialogActivity.java
@@ -35,6 +35,7 @@ import androidx.fragment.app.FragmentActivity;
import androidx.fragment.app.FragmentManager;
import com.android.settings.R;
+import com.android.settings.network.SubscriptionUtil;
import com.android.settings.network.telephony.SubscriptionActionDialogActivity;
import java.util.List;
@@ -65,6 +66,11 @@ public class SimDialogActivity extends FragmentActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ if (!SubscriptionUtil.isSimHardwareVisible(this)) {
+ Log.d(TAG, "Not support on device without SIM.");
+ finish();
+ return;
+ }
SimDialogProhibitService.supportDismiss(this);
getWindow().addSystemFlags(
diff --git a/src/com/android/settings/sim/SimSelectNotification.java b/src/com/android/settings/sim/SimSelectNotification.java
index 9d3f860a014..9b235cea931 100644
--- a/src/com/android/settings/sim/SimSelectNotification.java
+++ b/src/com/android/settings/sim/SimSelectNotification.java
@@ -77,6 +77,10 @@ public class SimSelectNotification extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
+ if (!SubscriptionUtil.isSimHardwareVisible(context)) {
+ Log.w(TAG, "Received unexpected intent with null action.");
+ return;
+ }
String action = intent.getAction();
if (action == null) {
diff --git a/src/com/android/settings/sim/smartForwarding/SmartForwardingActivity.java b/src/com/android/settings/sim/smartForwarding/SmartForwardingActivity.java
index 217801e5a17..070e65a1d56 100644
--- a/src/com/android/settings/sim/smartForwarding/SmartForwardingActivity.java
+++ b/src/com/android/settings/sim/smartForwarding/SmartForwardingActivity.java
@@ -38,6 +38,7 @@ import androidx.core.content.ContextCompat;
import com.android.settings.R;
import com.android.settings.core.SettingsBaseActivity;
+import com.android.settings.network.SubscriptionUtil;
import com.google.common.util.concurrent.FutureCallback;
import com.google.common.util.concurrent.Futures;
@@ -48,6 +49,7 @@ import com.google.common.util.concurrent.MoreExecutors;
import java.util.concurrent.Executors;
public class SmartForwardingActivity extends SettingsBaseActivity {
+ static final String LOG_TAG = SmartForwardingActivity.class.toString();
final ListeningExecutorService service =
MoreExecutors.listeningDecorator(Executors.newSingleThreadExecutor());
@@ -55,6 +57,12 @@ public class SmartForwardingActivity extends SettingsBaseActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ if (!SubscriptionUtil.isSimHardwareVisible(this)) {
+ Log.d(LOG_TAG, "Not support on device without SIM.");
+ finish();
+ return;
+ }
+
final Toolbar toolbar = findViewById(R.id.action_bar);
toolbar.setVisibility(View.VISIBLE);
setActionBar(toolbar);
@@ -166,4 +174,4 @@ public class SmartForwardingActivity extends SettingsBaseActivity {
.create();
mDialog.show();
}
-}
\ No newline at end of file
+}
diff --git a/tests/robotests/src/com/android/settings/MainClearTest.java b/tests/robotests/src/com/android/settings/MainClearTest.java
index ec33fadfd02..9795092a657 100644
--- a/tests/robotests/src/com/android/settings/MainClearTest.java
+++ b/tests/robotests/src/com/android/settings/MainClearTest.java
@@ -102,7 +102,10 @@ public class MainClearTest {
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
- mMainClear = spy(new MainClear());
+ mMainClear = spy(new MainClear() {
+ @Override
+ boolean showAnySubscriptionInfo(Context context) { return true; }
+ });
mActivity = Robolectric.setupActivity(FragmentActivity.class);
mShadowActivity = Shadows.shadowOf(mActivity);
UserManager userManager = mActivity.getSystemService(UserManager.class);
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceControllerTest.java
index 55194add83d..bae629ced42 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/deviceinfo/imei/ImeiInfoPreferenceControllerTest.java
@@ -29,6 +29,7 @@ import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.content.Context;
+import android.content.res.Resources;
import android.os.UserManager;
import android.telephony.TelephonyManager;
@@ -69,12 +70,18 @@ public class ImeiInfoPreferenceControllerTest {
private PreferenceCategory mCategory;
private Context mContext;
+ private Resources mResources;
private ImeiInfoPreferenceController mController;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = spy(RuntimeEnvironment.application);
+
+ mResources = spy(mContext.getResources());
+ when(mContext.getResources()).thenReturn(mResources);
+ when(mResources.getBoolean(R.bool.config_show_sim_info)).thenReturn(true);
+
doReturn(mUserManager).when(mContext).getSystemService(UserManager.class);
mController = spy(new ImeiInfoPreferenceController(mContext, "imei_info"));
mController.setHost(mFragment);
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/simstatus/SimStatusPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/simstatus/SimStatusPreferenceControllerTest.java
index 85a6fac765a..4ffaf7ae6ec 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/simstatus/SimStatusPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/deviceinfo/simstatus/SimStatusPreferenceControllerTest.java
@@ -25,6 +25,7 @@ import static org.mockito.Mockito.when;
import android.content.Context;
import android.os.UserManager;
+import android.content.res.Resources;
import android.telephony.TelephonyManager;
import androidx.fragment.app.Fragment;
@@ -64,12 +65,18 @@ public class SimStatusPreferenceControllerTest {
private PreferenceCategory mCategory;
private Context mContext;
+ private Resources mResources;
private SimStatusPreferenceController mController;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = spy(RuntimeEnvironment.application);
+
+ mResources = spy(mContext.getResources());
+ when(mContext.getResources()).thenReturn(mResources);
+ when(mResources.getBoolean(R.bool.config_show_sim_info)).thenReturn(true);
+
doReturn(mUserManager).when(mContext).getSystemService(UserManager.class);
mController = spy(new SimStatusPreferenceController(mContext, mFragment));
doReturn(true).when(mController).isAvailable();
diff --git a/tests/robotests/src/com/android/settings/network/MobileNetworkListFragmentTest.java b/tests/robotests/src/com/android/settings/network/MobileNetworkListFragmentTest.java
index fd2b520929f..2e04ea751f0 100644
--- a/tests/robotests/src/com/android/settings/network/MobileNetworkListFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/network/MobileNetworkListFragmentTest.java
@@ -21,8 +21,10 @@ import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.when;
import android.content.Context;
+import android.content.res.Resources;
import android.os.UserManager;
+import com.android.settings.R;
import com.android.settings.search.BaseSearchIndexProvider;
import org.junit.Before;
@@ -38,6 +40,8 @@ public class MobileNetworkListFragmentTest {
@Mock
private Context mContext;
@Mock
+ private Resources mResources;
+ @Mock
private UserManager mUserManager;
private MobileNetworkListFragment mFragment;
@@ -55,6 +59,9 @@ public class MobileNetworkListFragmentTest {
final BaseSearchIndexProvider provider =
(BaseSearchIndexProvider) mFragment.SEARCH_INDEX_DATA_PROVIDER;
+ when(mContext.getResources()).thenReturn(mResources);
+ when(mResources.getBoolean(R.bool.config_show_sim_info)).thenReturn(true);
+
final Object obj = ReflectionHelpers.callInstanceMethod(provider, "isPageSearchEnabled",
ReflectionHelpers.ClassParameter.from(Context.class, mContext));
final boolean isEnabled = (Boolean) obj;
@@ -69,6 +76,9 @@ public class MobileNetworkListFragmentTest {
final BaseSearchIndexProvider provider =
(BaseSearchIndexProvider) mFragment.SEARCH_INDEX_DATA_PROVIDER;
+ when(mContext.getResources()).thenReturn(mResources);
+ when(mResources.getBoolean(R.bool.config_show_sim_info)).thenReturn(true);
+
final Object obj = ReflectionHelpers.callInstanceMethod(provider, "isPageSearchEnabled",
ReflectionHelpers.ClassParameter.from(Context.class, mContext));
final boolean isEnabled = (Boolean) obj;
diff --git a/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java b/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java
index 35891843c1b..b347ac086b7 100644
--- a/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java
@@ -147,7 +147,10 @@ public class NetworkProviderSettingsTest {
@Before
public void setUp() {
- mNetworkProviderSettings = spy(new NetworkProviderSettings());
+ mNetworkProviderSettings = spy(new NetworkProviderSettings() {
+ @Override
+ boolean showAnySubscriptionInfo(Context context) { return true; }
+ });
doReturn(mContext).when(mNetworkProviderSettings).getContext();
doReturn(mPreferenceManager).when(mNetworkProviderSettings).getPreferenceManager();
doReturn(mPowerManager).when(mContext).getSystemService(PowerManager.class);
diff --git a/tests/robotests/src/com/android/settings/network/telephony/MobileNetworkSettingsTest.java b/tests/robotests/src/com/android/settings/network/telephony/MobileNetworkSettingsTest.java
index 44611cec616..3e219a412ce 100644
--- a/tests/robotests/src/com/android/settings/network/telephony/MobileNetworkSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/network/telephony/MobileNetworkSettingsTest.java
@@ -29,6 +29,7 @@ import static org.mockito.Mockito.when;
import android.app.Activity;
import android.app.usage.NetworkStatsManager;
import android.content.Context;
+import android.content.res.Resources;
import android.net.NetworkPolicyManager;
import android.os.Bundle;
import android.os.UserManager;
@@ -37,6 +38,7 @@ import android.telephony.TelephonyManager;
import androidx.fragment.app.FragmentActivity;
+import com.android.settings.R;
import com.android.settings.datausage.DataUsageSummaryPreferenceController;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.testutils.shadow.ShadowEntityHeaderController;
@@ -68,12 +70,18 @@ public class MobileNetworkSettingsTest {
private FragmentActivity mActivity;
private Context mContext;
+ private Resources mResources;
private MobileNetworkSettings mFragment;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = spy(RuntimeEnvironment.application);
+
+ mResources = spy(mContext.getResources());
+ when(mContext.getResources()).thenReturn(mResources);
+ when(mResources.getBoolean(R.bool.config_show_sim_info)).thenReturn(true);
+
when(mActivity.getSystemService(TelephonyManager.class)).thenReturn(mTelephonyManager);
when(mTelephonyManager.createForSubscriptionId(anyInt())).thenReturn(mTelephonyManager);
when(mContext.getSystemService(NetworkStatsManager.class)).thenReturn(mNetworkStatsManager);
diff --git a/tests/robotests/src/com/android/settings/security/SimLockPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/security/SimLockPreferenceControllerTest.java
index ef5973c1d5b..f38cc4948d4 100644
--- a/tests/robotests/src/com/android/settings/security/SimLockPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/security/SimLockPreferenceControllerTest.java
@@ -22,9 +22,11 @@ import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;
import android.content.Context;
+import android.content.res.Resources;
import android.os.PersistableBundle;
import android.os.UserManager;
import android.telephony.CarrierConfigManager;
@@ -35,6 +37,7 @@ import android.telephony.TelephonyManager;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
+import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
import org.junit.Before;
@@ -66,6 +69,7 @@ public class SimLockPreferenceControllerTest {
private SimLockPreferenceController mController;
private Preference mPreference;
private Context mContext;
+ private Resources mResources;
@Before
public void setUp() {
@@ -76,15 +80,28 @@ public class SimLockPreferenceControllerTest {
shadowApplication.setSystemService(Context.CARRIER_CONFIG_SERVICE, mCarrierManager);
shadowApplication.setSystemService(Context.USER_SERVICE, mUserManager);
shadowApplication.setSystemService(Context.TELEPHONY_SERVICE, mTelephonyManager);
- mContext = RuntimeEnvironment.application;
+ mContext = spy(RuntimeEnvironment.application);
+
+ mResources = spy(mContext.getResources());
+ when(mContext.getResources()).thenReturn(mResources);
+
mController = new SimLockPreferenceController(mContext, "key");
mPreference = new Preference(mContext);
mPreference.setKey(mController.getPreferenceKey());
when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference);
}
+ @Test
+ public void isAvailable_notShowSimUi_false() {
+ when(mResources.getBoolean(R.bool.config_show_sim_info)).thenReturn(false);
+
+ assertThat(mController.getAvailabilityStatus())
+ .isEqualTo(BasePreferenceController.UNSUPPORTED_ON_DEVICE);
+ }
+
@Test
public void isAvailable_notAdmin_false() {
+ when(mResources.getBoolean(R.bool.config_show_sim_info)).thenReturn(true);
when(mUserManager.isAdminUser()).thenReturn(false);
assertThat(mController.getAvailabilityStatus())
@@ -93,6 +110,7 @@ public class SimLockPreferenceControllerTest {
@Test
public void isAvailable_simIccNotReady_false() {
+ when(mResources.getBoolean(R.bool.config_show_sim_info)).thenReturn(true);
when(mUserManager.isAdminUser()).thenReturn(true);
assertThat(mController.getAvailabilityStatus())
@@ -124,6 +142,7 @@ public class SimLockPreferenceControllerTest {
@Test
public void displayPreference_simReady_enablePreference() {
+ when(mResources.getBoolean(R.bool.config_show_sim_info)).thenReturn(true);
mController.displayPreference(mScreen);
assertThat(mPreference.isEnabled()).isFalse();
@@ -140,12 +159,14 @@ public class SimLockPreferenceControllerTest {
@Test
public void getPreferenceKey_whenGivenValue_returnsGivenValue() {
+ when(mResources.getBoolean(R.bool.config_show_sim_info)).thenReturn(true);
mController = new SimLockPreferenceController(mContext, "key");
assertThat(mController.getPreferenceKey()).isEqualTo("key");
}
private void setupMockIcc() {
+ when(mResources.getBoolean(R.bool.config_show_sim_info)).thenReturn(true);
final List subscriptionInfoList = new ArrayList<>();
SubscriptionInfo info = mock(SubscriptionInfo.class);
subscriptionInfoList.add(info);
@@ -156,6 +177,7 @@ public class SimLockPreferenceControllerTest {
}
private void setupMockSimReady() {
+ when(mResources.getBoolean(R.bool.config_show_sim_info)).thenReturn(true);
final List subscriptionInfoList = new ArrayList<>();
SubscriptionInfo info = mock(SubscriptionInfo.class);
subscriptionInfoList.add(info);
diff --git a/tests/robotests/src/com/android/settings/sim/SimSelectNotificationTest.java b/tests/robotests/src/com/android/settings/sim/SimSelectNotificationTest.java
index b33e94ba52e..e1b2b4ed84e 100644
--- a/tests/robotests/src/com/android/settings/sim/SimSelectNotificationTest.java
+++ b/tests/robotests/src/com/android/settings/sim/SimSelectNotificationTest.java
@@ -143,6 +143,7 @@ public class SimSelectNotificationTest {
when(mSubInfo.getDisplayName()).thenReturn(mFakeDisplayName);
when(mContext.getResources()).thenReturn(mResources);
+ when(mResources.getBoolean(R.bool.config_show_sim_info)).thenReturn(true);
when(mResources.getText(R.string.enable_sending_mms_notification_title))
.thenReturn(mFakeNotificationTitle);
when(mResources.getText(R.string.enable_mms_notification_channel_title))
diff --git a/tests/unit/src/com/android/settings/network/SubscriptionUtilTest.java b/tests/unit/src/com/android/settings/network/SubscriptionUtilTest.java
index 43a32b51fbc..63dca7e88eb 100644
--- a/tests/unit/src/com/android/settings/network/SubscriptionUtilTest.java
+++ b/tests/unit/src/com/android/settings/network/SubscriptionUtilTest.java
@@ -25,11 +25,14 @@ import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;
import android.content.Context;
+import android.content.res.Resources;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
+import com.android.settings.R;
+
import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4;
@@ -58,6 +61,8 @@ public class SubscriptionUtilTest {
private SubscriptionManager mSubMgr;
@Mock
private TelephonyManager mTelMgr;
+ @Mock
+ private Resources mResources;
@Before
@@ -443,4 +448,22 @@ public class SubscriptionUtilTest {
public void isInactiveInsertedPSim_nullSubInfo_doesNotCrash() {
assertThat(SubscriptionUtil.isInactiveInsertedPSim(null)).isFalse();
}
+
+ @Test
+ public void isSimHardwareVisible_configAsInvisible_returnFalse() {
+ when(mContext.getResources()).thenReturn(mResources);
+ when(mResources.getBoolean(R.bool.config_show_sim_info))
+ .thenReturn(false);
+
+ assertThat(SubscriptionUtil.isSimHardwareVisible(mContext)).isFalse();
+ }
+
+ @Test
+ public void isSimHardwareVisible_configAsVisible_returnTrue() {
+ when(mContext.getResources()).thenReturn(mResources);
+ when(mResources.getBoolean(R.bool.config_show_sim_info))
+ .thenReturn(true);
+
+ assertTrue(SubscriptionUtil.isSimHardwareVisible(mContext));
+ }
}