Loading src/com/android/settings/network/MobileNetworkListFragment.kt +5 −4 Original line number Diff line number Diff line Loading @@ -27,13 +27,13 @@ import com.android.settings.R import com.android.settings.SettingsPreferenceFragment import com.android.settings.dashboard.DashboardFragment import com.android.settings.flags.Flags import com.android.settings.network.telephony.SimRepository import com.android.settings.network.telephony.euicc.EuiccRepository import com.android.settings.search.BaseSearchIndexProvider import com.android.settings.spa.SpaActivity.Companion.startSpaActivity import com.android.settings.spa.network.NetworkCellularGroupProvider import com.android.settingslib.search.SearchIndexable import com.android.settingslib.spa.framework.util.collectLatestWithLifecycle import com.android.settingslib.spaprivileged.framework.common.userManager import com.android.settingslib.spaprivileged.settingsprovider.settingsGlobalBooleanFlow @SearchIndexable(forTarget = SearchIndexable.ALL and SearchIndexable.ARC.inv()) Loading Loading @@ -85,10 +85,11 @@ class MobileNetworkListFragment : DashboardFragment() { val SEARCH_INDEX_DATA_PROVIDER = SearchIndexProvider() @VisibleForTesting class SearchIndexProvider : BaseSearchIndexProvider(R.xml.network_provider_sims_list) { class SearchIndexProvider( private val simRepositoryFactory: (Context) -> SimRepository = ::SimRepository ) : BaseSearchIndexProvider(R.xml.network_provider_sims_list) { public override fun isPageSearchEnabled(context: Context): Boolean = SubscriptionUtil.isSimHardwareVisible(context) && context.userManager.isAdminUser simRepositoryFactory(context).showMobileNetworkPage() } } } src/com/android/settings/network/MobileNetworkPreferenceController.javadeleted 100644 → 0 +0 −162 Original line number Diff line number Diff line /* * Copyright (C) 2016 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.settings.network; import static android.os.UserHandle.myUserId; import static android.os.UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS; import static com.android.settings.Utils.SETTINGS_PACKAGE_NAME; import static androidx.lifecycle.Lifecycle.Event; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.UserManager; import android.provider.Settings; import android.telephony.PhoneStateListener; import android.telephony.ServiceState; import android.telephony.TelephonyCallback; import android.telephony.TelephonyManager; import androidx.annotation.VisibleForTesting; import androidx.lifecycle.LifecycleObserver; import androidx.lifecycle.OnLifecycleEvent; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.network.telephony.MobileNetworkUtils; import com.android.settingslib.RestrictedLockUtilsInternal; import com.android.settingslib.RestrictedPreference; import com.android.settingslib.Utils; import com.android.settingslib.core.AbstractPreferenceController; public class MobileNetworkPreferenceController extends AbstractPreferenceController implements PreferenceControllerMixin, LifecycleObserver { @VisibleForTesting static final String KEY_MOBILE_NETWORK_SETTINGS = "mobile_network_settings"; private final boolean mIsSecondaryUser; private final TelephonyManager mTelephonyManager; private final UserManager mUserManager; private Preference mPreference; @VisibleForTesting MobileNetworkTelephonyCallback mTelephonyCallback; private BroadcastReceiver mAirplanModeChangedReceiver; public MobileNetworkPreferenceController(Context context) { super(context); mUserManager = (UserManager) context.getSystemService(Context.USER_SERVICE); mTelephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); mIsSecondaryUser = !mUserManager.isAdminUser(); mAirplanModeChangedReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { updateState(mPreference); } }; } @Override public boolean isAvailable() { return !isUserRestricted() && !Utils.isWifiOnly(mContext); } public boolean isUserRestricted() { return mIsSecondaryUser || RestrictedLockUtilsInternal.hasBaseUserRestriction( mContext, DISALLOW_CONFIG_MOBILE_NETWORKS, myUserId()); } @Override public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); mPreference = screen.findPreference(getPreferenceKey()); } @Override public String getPreferenceKey() { return KEY_MOBILE_NETWORK_SETTINGS; } class MobileNetworkTelephonyCallback extends TelephonyCallback implements TelephonyCallback.ServiceStateListener { @Override public void onServiceStateChanged(ServiceState serviceState) { updateState(mPreference); } } @OnLifecycleEvent(Event.ON_START) public void onStart() { if (isAvailable()) { if (mTelephonyCallback == null) { mTelephonyCallback = new MobileNetworkTelephonyCallback(); } mTelephonyManager.registerTelephonyCallback( mContext.getMainExecutor(), mTelephonyCallback); } if (mAirplanModeChangedReceiver != null) { mContext.registerReceiver(mAirplanModeChangedReceiver, new IntentFilter(Intent.ACTION_AIRPLANE_MODE_CHANGED)); } } @OnLifecycleEvent(Event.ON_STOP) public void onStop() { if (mTelephonyCallback != null) { mTelephonyManager.unregisterTelephonyCallback(mTelephonyCallback); } if (mAirplanModeChangedReceiver != null) { mContext.unregisterReceiver(mAirplanModeChangedReceiver); } } @Override public void updateState(Preference preference) { super.updateState(preference); if (preference instanceof RestrictedPreference && ((RestrictedPreference) preference).isDisabledByAdmin()) { return; } preference.setEnabled(Settings.Global.getInt( mContext.getContentResolver(), Settings.Global.AIRPLANE_MODE_ON, 0) == 0); } @Override public boolean handlePreferenceTreeClick(Preference preference) { if (KEY_MOBILE_NETWORK_SETTINGS.equals(preference.getKey())) { final Intent intent = new Intent(Settings.ACTION_NETWORK_OPERATOR_SETTINGS); intent.setPackage(SETTINGS_PACKAGE_NAME); mContext.startActivity(intent); return true; } return false; } @Override public CharSequence getSummary() { return MobileNetworkUtils.getCurrentCarrierNameForDisplay(mContext); } } src/com/android/settings/network/MobileNetworkSummaryController.java +2 −6 Original line number Diff line number Diff line Loading @@ -21,7 +21,6 @@ import static androidx.lifecycle.Lifecycle.Event.ON_RESUME; import android.content.Context; import android.content.Intent; import android.os.UserManager; import android.telephony.SubscriptionManager; import android.telephony.euicc.EuiccManager; Loading @@ -35,10 +34,10 @@ import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.dashboard.DashboardFragment; import com.android.settings.network.telephony.SimRepository; import com.android.settings.network.telephony.euicc.EuiccRepository; import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.RestrictedPreference; import com.android.settingslib.Utils; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import com.android.settingslib.mobile.dataservice.MobileNetworkInfoEntity; Loading @@ -56,7 +55,6 @@ public class MobileNetworkSummaryController extends AbstractPreferenceController private static final String KEY = "mobile_network_list"; private final MetricsFeatureProvider mMetricsFeatureProvider; private UserManager mUserManager; private RestrictedPreference mPreference; private MobileNetworkRepository mMobileNetworkRepository; Loading Loading @@ -85,7 +83,6 @@ public class MobileNetworkSummaryController extends AbstractPreferenceController LifecycleOwner lifecycleOwner) { super(context); mMetricsFeatureProvider = FeatureFactory.getFeatureFactory().getMetricsFeatureProvider(); mUserManager = context.getSystemService(UserManager.class); mLifecycleOwner = lifecycleOwner; mMobileNetworkRepository = MobileNetworkRepository.getInstance(context); mIsAirplaneModeOn = mMobileNetworkRepository.isAirplaneModeOn(); Loading Loading @@ -185,8 +182,7 @@ public class MobileNetworkSummaryController extends AbstractPreferenceController @Override public boolean isAvailable() { return SubscriptionUtil.isSimHardwareVisible(mContext) && !Utils.isWifiOnly(mContext) && mUserManager.isAdminUser(); return new SimRepository(mContext).showMobileNetworkPage(); } @Override Loading src/com/android/settings/network/TopLevelNetworkEntryPreferenceController.java→src/com/android/settings/network/TopLevelNetworkEntryPreferenceController.kt +58 −0 Original line number Diff line number Diff line /* * Copyright (C) 2018 The Android Open Source Project * Copyright (C) 2024 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. Loading @@ -14,42 +14,45 @@ * limitations under the License. */ package com.android.settings.network; import android.content.Context; import android.text.BidiFormatter; import com.android.settings.R; import com.android.settings.Utils; import com.android.settings.activityembedding.ActivityEmbeddingUtils; import com.android.settings.core.BasePreferenceController; public class TopLevelNetworkEntryPreferenceController extends BasePreferenceController { private final MobileNetworkPreferenceController mMobileNetworkPreferenceController; public TopLevelNetworkEntryPreferenceController(Context context, String preferenceKey) { super(context, preferenceKey); mMobileNetworkPreferenceController = new MobileNetworkPreferenceController(mContext); } @Override public int getAvailabilityStatus() { package com.android.settings.network import android.content.Context import android.text.BidiFormatter import com.android.settings.R import com.android.settings.Utils import com.android.settings.activityembedding.ActivityEmbeddingUtils import com.android.settings.core.BasePreferenceController import com.android.settings.network.telephony.SimRepository class TopLevelNetworkEntryPreferenceController @JvmOverloads constructor( context: Context, preferenceKey: String, private val simRepository: SimRepository = SimRepository(context), private val isDemoUser: () -> Boolean = { Utils.isDemoUser(context) }, private val isEmbeddingActivityEnabled: () -> Boolean = { ActivityEmbeddingUtils.isEmbeddingActivityEnabled(context) }, ) : BasePreferenceController(context, preferenceKey) { override fun getAvailabilityStatus(): Int { // TODO(b/281597506): Update the ActivityEmbeddingUtils.isEmbeddingActivityEnabled // while getting the new API. return (Utils.isDemoUser(mContext) && !ActivityEmbeddingUtils.isEmbeddingActivityEnabled(mContext)) ? UNSUPPORTED_ON_DEVICE : AVAILABLE; return if (isDemoUser() && !isEmbeddingActivityEnabled()) { UNSUPPORTED_ON_DEVICE } else { AVAILABLE } } @Override public CharSequence getSummary() { if (mMobileNetworkPreferenceController.isAvailable()) { return BidiFormatter.getInstance() .unicodeWrap(mContext.getString(R.string.network_dashboard_summary_mobile)); override fun getSummary(): CharSequence { val summaryResId = if (simRepository.showMobileNetworkPage()) { R.string.network_dashboard_summary_mobile } else { return BidiFormatter.getInstance() .unicodeWrap(mContext.getString(R.string.network_dashboard_summary_no_mobile)); R.string.network_dashboard_summary_no_mobile } return BidiFormatter.getInstance().unicodeWrap(mContext.getString(summaryResId)) } } src/com/android/settings/network/telephony/SimRepository.kt 0 → 100644 +30 −0 Original line number Diff line number Diff line /* * Copyright (C) 2024 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.settings.network.telephony import android.content.Context import android.content.pm.PackageManager import com.android.settingslib.spaprivileged.framework.common.userManager class SimRepository(context: Context) { private val packageManager = context.packageManager private val userManager = context.userManager /** Gets whether we show mobile network settings page to the current user. */ fun showMobileNetworkPage(): Boolean = packageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY) && userManager.isAdminUser } Loading
src/com/android/settings/network/MobileNetworkListFragment.kt +5 −4 Original line number Diff line number Diff line Loading @@ -27,13 +27,13 @@ import com.android.settings.R import com.android.settings.SettingsPreferenceFragment import com.android.settings.dashboard.DashboardFragment import com.android.settings.flags.Flags import com.android.settings.network.telephony.SimRepository import com.android.settings.network.telephony.euicc.EuiccRepository import com.android.settings.search.BaseSearchIndexProvider import com.android.settings.spa.SpaActivity.Companion.startSpaActivity import com.android.settings.spa.network.NetworkCellularGroupProvider import com.android.settingslib.search.SearchIndexable import com.android.settingslib.spa.framework.util.collectLatestWithLifecycle import com.android.settingslib.spaprivileged.framework.common.userManager import com.android.settingslib.spaprivileged.settingsprovider.settingsGlobalBooleanFlow @SearchIndexable(forTarget = SearchIndexable.ALL and SearchIndexable.ARC.inv()) Loading Loading @@ -85,10 +85,11 @@ class MobileNetworkListFragment : DashboardFragment() { val SEARCH_INDEX_DATA_PROVIDER = SearchIndexProvider() @VisibleForTesting class SearchIndexProvider : BaseSearchIndexProvider(R.xml.network_provider_sims_list) { class SearchIndexProvider( private val simRepositoryFactory: (Context) -> SimRepository = ::SimRepository ) : BaseSearchIndexProvider(R.xml.network_provider_sims_list) { public override fun isPageSearchEnabled(context: Context): Boolean = SubscriptionUtil.isSimHardwareVisible(context) && context.userManager.isAdminUser simRepositoryFactory(context).showMobileNetworkPage() } } }
src/com/android/settings/network/MobileNetworkPreferenceController.javadeleted 100644 → 0 +0 −162 Original line number Diff line number Diff line /* * Copyright (C) 2016 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.settings.network; import static android.os.UserHandle.myUserId; import static android.os.UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS; import static com.android.settings.Utils.SETTINGS_PACKAGE_NAME; import static androidx.lifecycle.Lifecycle.Event; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.UserManager; import android.provider.Settings; import android.telephony.PhoneStateListener; import android.telephony.ServiceState; import android.telephony.TelephonyCallback; import android.telephony.TelephonyManager; import androidx.annotation.VisibleForTesting; import androidx.lifecycle.LifecycleObserver; import androidx.lifecycle.OnLifecycleEvent; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.network.telephony.MobileNetworkUtils; import com.android.settingslib.RestrictedLockUtilsInternal; import com.android.settingslib.RestrictedPreference; import com.android.settingslib.Utils; import com.android.settingslib.core.AbstractPreferenceController; public class MobileNetworkPreferenceController extends AbstractPreferenceController implements PreferenceControllerMixin, LifecycleObserver { @VisibleForTesting static final String KEY_MOBILE_NETWORK_SETTINGS = "mobile_network_settings"; private final boolean mIsSecondaryUser; private final TelephonyManager mTelephonyManager; private final UserManager mUserManager; private Preference mPreference; @VisibleForTesting MobileNetworkTelephonyCallback mTelephonyCallback; private BroadcastReceiver mAirplanModeChangedReceiver; public MobileNetworkPreferenceController(Context context) { super(context); mUserManager = (UserManager) context.getSystemService(Context.USER_SERVICE); mTelephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); mIsSecondaryUser = !mUserManager.isAdminUser(); mAirplanModeChangedReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { updateState(mPreference); } }; } @Override public boolean isAvailable() { return !isUserRestricted() && !Utils.isWifiOnly(mContext); } public boolean isUserRestricted() { return mIsSecondaryUser || RestrictedLockUtilsInternal.hasBaseUserRestriction( mContext, DISALLOW_CONFIG_MOBILE_NETWORKS, myUserId()); } @Override public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); mPreference = screen.findPreference(getPreferenceKey()); } @Override public String getPreferenceKey() { return KEY_MOBILE_NETWORK_SETTINGS; } class MobileNetworkTelephonyCallback extends TelephonyCallback implements TelephonyCallback.ServiceStateListener { @Override public void onServiceStateChanged(ServiceState serviceState) { updateState(mPreference); } } @OnLifecycleEvent(Event.ON_START) public void onStart() { if (isAvailable()) { if (mTelephonyCallback == null) { mTelephonyCallback = new MobileNetworkTelephonyCallback(); } mTelephonyManager.registerTelephonyCallback( mContext.getMainExecutor(), mTelephonyCallback); } if (mAirplanModeChangedReceiver != null) { mContext.registerReceiver(mAirplanModeChangedReceiver, new IntentFilter(Intent.ACTION_AIRPLANE_MODE_CHANGED)); } } @OnLifecycleEvent(Event.ON_STOP) public void onStop() { if (mTelephonyCallback != null) { mTelephonyManager.unregisterTelephonyCallback(mTelephonyCallback); } if (mAirplanModeChangedReceiver != null) { mContext.unregisterReceiver(mAirplanModeChangedReceiver); } } @Override public void updateState(Preference preference) { super.updateState(preference); if (preference instanceof RestrictedPreference && ((RestrictedPreference) preference).isDisabledByAdmin()) { return; } preference.setEnabled(Settings.Global.getInt( mContext.getContentResolver(), Settings.Global.AIRPLANE_MODE_ON, 0) == 0); } @Override public boolean handlePreferenceTreeClick(Preference preference) { if (KEY_MOBILE_NETWORK_SETTINGS.equals(preference.getKey())) { final Intent intent = new Intent(Settings.ACTION_NETWORK_OPERATOR_SETTINGS); intent.setPackage(SETTINGS_PACKAGE_NAME); mContext.startActivity(intent); return true; } return false; } @Override public CharSequence getSummary() { return MobileNetworkUtils.getCurrentCarrierNameForDisplay(mContext); } }
src/com/android/settings/network/MobileNetworkSummaryController.java +2 −6 Original line number Diff line number Diff line Loading @@ -21,7 +21,6 @@ import static androidx.lifecycle.Lifecycle.Event.ON_RESUME; import android.content.Context; import android.content.Intent; import android.os.UserManager; import android.telephony.SubscriptionManager; import android.telephony.euicc.EuiccManager; Loading @@ -35,10 +34,10 @@ import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.dashboard.DashboardFragment; import com.android.settings.network.telephony.SimRepository; import com.android.settings.network.telephony.euicc.EuiccRepository; import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.RestrictedPreference; import com.android.settingslib.Utils; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import com.android.settingslib.mobile.dataservice.MobileNetworkInfoEntity; Loading @@ -56,7 +55,6 @@ public class MobileNetworkSummaryController extends AbstractPreferenceController private static final String KEY = "mobile_network_list"; private final MetricsFeatureProvider mMetricsFeatureProvider; private UserManager mUserManager; private RestrictedPreference mPreference; private MobileNetworkRepository mMobileNetworkRepository; Loading Loading @@ -85,7 +83,6 @@ public class MobileNetworkSummaryController extends AbstractPreferenceController LifecycleOwner lifecycleOwner) { super(context); mMetricsFeatureProvider = FeatureFactory.getFeatureFactory().getMetricsFeatureProvider(); mUserManager = context.getSystemService(UserManager.class); mLifecycleOwner = lifecycleOwner; mMobileNetworkRepository = MobileNetworkRepository.getInstance(context); mIsAirplaneModeOn = mMobileNetworkRepository.isAirplaneModeOn(); Loading Loading @@ -185,8 +182,7 @@ public class MobileNetworkSummaryController extends AbstractPreferenceController @Override public boolean isAvailable() { return SubscriptionUtil.isSimHardwareVisible(mContext) && !Utils.isWifiOnly(mContext) && mUserManager.isAdminUser(); return new SimRepository(mContext).showMobileNetworkPage(); } @Override Loading
src/com/android/settings/network/TopLevelNetworkEntryPreferenceController.java→src/com/android/settings/network/TopLevelNetworkEntryPreferenceController.kt +58 −0 Original line number Diff line number Diff line /* * Copyright (C) 2018 The Android Open Source Project * Copyright (C) 2024 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. Loading @@ -14,42 +14,45 @@ * limitations under the License. */ package com.android.settings.network; import android.content.Context; import android.text.BidiFormatter; import com.android.settings.R; import com.android.settings.Utils; import com.android.settings.activityembedding.ActivityEmbeddingUtils; import com.android.settings.core.BasePreferenceController; public class TopLevelNetworkEntryPreferenceController extends BasePreferenceController { private final MobileNetworkPreferenceController mMobileNetworkPreferenceController; public TopLevelNetworkEntryPreferenceController(Context context, String preferenceKey) { super(context, preferenceKey); mMobileNetworkPreferenceController = new MobileNetworkPreferenceController(mContext); } @Override public int getAvailabilityStatus() { package com.android.settings.network import android.content.Context import android.text.BidiFormatter import com.android.settings.R import com.android.settings.Utils import com.android.settings.activityembedding.ActivityEmbeddingUtils import com.android.settings.core.BasePreferenceController import com.android.settings.network.telephony.SimRepository class TopLevelNetworkEntryPreferenceController @JvmOverloads constructor( context: Context, preferenceKey: String, private val simRepository: SimRepository = SimRepository(context), private val isDemoUser: () -> Boolean = { Utils.isDemoUser(context) }, private val isEmbeddingActivityEnabled: () -> Boolean = { ActivityEmbeddingUtils.isEmbeddingActivityEnabled(context) }, ) : BasePreferenceController(context, preferenceKey) { override fun getAvailabilityStatus(): Int { // TODO(b/281597506): Update the ActivityEmbeddingUtils.isEmbeddingActivityEnabled // while getting the new API. return (Utils.isDemoUser(mContext) && !ActivityEmbeddingUtils.isEmbeddingActivityEnabled(mContext)) ? UNSUPPORTED_ON_DEVICE : AVAILABLE; return if (isDemoUser() && !isEmbeddingActivityEnabled()) { UNSUPPORTED_ON_DEVICE } else { AVAILABLE } } @Override public CharSequence getSummary() { if (mMobileNetworkPreferenceController.isAvailable()) { return BidiFormatter.getInstance() .unicodeWrap(mContext.getString(R.string.network_dashboard_summary_mobile)); override fun getSummary(): CharSequence { val summaryResId = if (simRepository.showMobileNetworkPage()) { R.string.network_dashboard_summary_mobile } else { return BidiFormatter.getInstance() .unicodeWrap(mContext.getString(R.string.network_dashboard_summary_no_mobile)); R.string.network_dashboard_summary_no_mobile } return BidiFormatter.getInstance().unicodeWrap(mContext.getString(summaryResId)) } }
src/com/android/settings/network/telephony/SimRepository.kt 0 → 100644 +30 −0 Original line number Diff line number Diff line /* * Copyright (C) 2024 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.settings.network.telephony import android.content.Context import android.content.pm.PackageManager import com.android.settingslib.spaprivileged.framework.common.userManager class SimRepository(context: Context) { private val packageManager = context.packageManager private val userManager = context.userManager /** Gets whether we show mobile network settings page to the current user. */ fun showMobileNetworkPage(): Boolean = packageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY) && userManager.isAdminUser }