diff --git a/src/com/android/settings/datausage/BillingCyclePreferenceController.java b/src/com/android/settings/datausage/BillingCyclePreferenceController.java index 9592c5e4775..73216ab72f4 100644 --- a/src/com/android/settings/datausage/BillingCyclePreferenceController.java +++ b/src/com/android/settings/datausage/BillingCyclePreferenceController.java @@ -28,6 +28,7 @@ import android.telephony.TelephonyManager; import androidx.preference.PreferenceScreen; import com.android.settings.core.BasePreferenceController; +import com.android.settings.datausage.DataUsageUtils; import com.android.settings.datausage.lib.DataUsageLib; import com.android.settingslib.NetworkPolicyEditor; @@ -63,6 +64,6 @@ public class BillingCyclePreferenceController extends BasePreferenceController { @Override public int getAvailabilityStatus() { - return AVAILABLE; + return DataUsageUtils.hasMobileData(mContext) ? AVAILABLE : CONDITIONALLY_UNAVAILABLE; } } diff --git a/src/com/android/settings/network/telephony/DataDuringCallsPreferenceController.java b/src/com/android/settings/network/telephony/DataDuringCallsPreferenceController.java index 110c5823de3..2bbb1cab049 100644 --- a/src/com/android/settings/network/telephony/DataDuringCallsPreferenceController.java +++ b/src/com/android/settings/network/telephony/DataDuringCallsPreferenceController.java @@ -33,6 +33,7 @@ import androidx.preference.PreferenceScreen; import androidx.preference.SwitchPreference; import com.android.internal.annotations.VisibleForTesting; +import com.android.settings.datausage.DataUsageUtils; import com.android.settings.network.MobileDataContentObserver; import com.android.settings.network.SubscriptionsChangeListener; @@ -102,10 +103,16 @@ public class DataDuringCallsPreferenceController extends TelephonyTogglePreferen return true; } + @VisibleForTesting + protected boolean hasMobileData() { + return DataUsageUtils.hasMobileData(mContext); + } + @Override public int getAvailabilityStatus(int subId) { if (!SubscriptionManager.isValidSubscriptionId(subId) - || SubscriptionManager.getDefaultDataSubscriptionId() == subId) { + || SubscriptionManager.getDefaultDataSubscriptionId() == subId + || (!hasMobileData())) { return CONDITIONALLY_UNAVAILABLE; } return AVAILABLE; diff --git a/src/com/android/settings/network/telephony/DataUsagePreferenceController.java b/src/com/android/settings/network/telephony/DataUsagePreferenceController.java index 40eb549308c..a536c1da96b 100644 --- a/src/com/android/settings/network/telephony/DataUsagePreferenceController.java +++ b/src/com/android/settings/network/telephony/DataUsagePreferenceController.java @@ -56,6 +56,7 @@ public class DataUsagePreferenceController extends TelephonyBasePreferenceContro @Override public int getAvailabilityStatus(int subId) { return (SubscriptionManager.isValidSubscriptionId(subId)) + && DataUsageUtils.hasMobileData(mContext) ? AVAILABLE : AVAILABLE_UNSEARCHABLE; } diff --git a/tests/robotests/src/com/android/settings/network/DataDuringCallsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/DataDuringCallsPreferenceControllerTest.java similarity index 97% rename from tests/robotests/src/com/android/settings/network/DataDuringCallsPreferenceControllerTest.java rename to tests/robotests/src/com/android/settings/network/telephony/DataDuringCallsPreferenceControllerTest.java index d366dfd9d0a..62d9974c59e 100644 --- a/tests/robotests/src/com/android/settings/network/DataDuringCallsPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/network/telephony/DataDuringCallsPreferenceControllerTest.java @@ -14,7 +14,7 @@ * limitations under the License */ -package com.android.settings.network; +package com.android.settings.network.telephony; import static android.telephony.SubscriptionManager.INVALID_SUBSCRIPTION_ID; @@ -74,7 +74,10 @@ public class DataDuringCallsPreferenceControllerTest { when(mTelephonyManager.createForSubscriptionId(anyInt())).thenReturn(mTelephonyManager); mSwitchPreference = new SwitchPreference(mContext); when(mPreferenceScreen.findPreference(PREF_KEY)).thenReturn(mSwitchPreference); - mController = new DataDuringCallsPreferenceController(mContext, PREF_KEY); + mController = new DataDuringCallsPreferenceController(mContext, PREF_KEY) { + @Override + protected boolean hasMobileData() { return true; } + }; mController.init(mLifecycle, SUB_ID_1); }