Add a mobile data toggle for setup
mIsInSetupWizard was moved to top of NetworkProviderSetting's onCreate so it is available for addPreferences(). Change-Id: I9299c3033e96bcd30450ec239f14fb5daa800d63
This commit is contained in:
parent
6cf58fed50
commit
2e10956562
6 changed files with 50 additions and 22 deletions
|
|
@ -42,6 +42,13 @@
|
|||
android:summary="@string/to_switch_networks_disconnect_ethernet"
|
||||
android:icon="@drawable/ic_settings_ethernet"/>
|
||||
|
||||
<SwitchPreferenceCompat
|
||||
android:key="main_toggle_mobile_data"
|
||||
android:title="@string/mobile_data_settings_title"
|
||||
android:summary="@string/mobile_data_settings_summary"
|
||||
settings:isPreferenceVisible="@bool/config_show_sim_info"
|
||||
settings:controller="com.android.settings.network.telephony.MobileDataPreferenceController"/>
|
||||
|
||||
<PreferenceCategory
|
||||
android:key="provider_model_mobile_network"
|
||||
android:title="@string/summary_placeholder"
|
||||
|
|
|
|||
|
|
@ -74,6 +74,7 @@ import com.android.settings.datausage.DataUsagePreference;
|
|||
import com.android.settings.datausage.DataUsageUtils;
|
||||
import com.android.settings.location.WifiScanningFragment;
|
||||
import com.android.settings.network.MobileDataEnabledListener;
|
||||
import com.android.settings.network.telephony.MobileDataPreferenceController;
|
||||
import com.android.settings.search.BaseSearchIndexProvider;
|
||||
import com.android.settings.wifi.AddNetworkFragment;
|
||||
import com.android.settings.wifi.AddWifiNetworkPreference;
|
||||
|
|
@ -262,6 +263,12 @@ public class NetworkProviderSettings extends RestrictedDashboardFragment
|
|||
@VisibleForTesting
|
||||
MenuProvider mMenuProvider;
|
||||
|
||||
/**
|
||||
* Mobile data toggle
|
||||
*/
|
||||
private static final String PREF_KEY_MOBILE_DATA_TOGGLE = "main_toggle_mobile_data";
|
||||
private MobileDataPreferenceController mMobileDataPreferenceController;
|
||||
|
||||
/**
|
||||
* Mobile networks list for provider model
|
||||
*/
|
||||
|
|
@ -322,6 +329,7 @@ public class NetworkProviderSettings extends RestrictedDashboardFragment
|
|||
public void onCreate(Bundle icicle) {
|
||||
super.onCreate(icicle);
|
||||
final Context context = getContext();
|
||||
final Intent intent = this.getIntent();
|
||||
if (context != null && !context.getResources().getBoolean(
|
||||
R.bool.config_show_internet_settings)) {
|
||||
finish();
|
||||
|
|
@ -329,6 +337,7 @@ public class NetworkProviderSettings extends RestrictedDashboardFragment
|
|||
}
|
||||
mAirplaneModeEnabler = new AirplaneModeEnabler(getContext(), this);
|
||||
mDataStateListener = new MobileDataEnabledListener(getContext(), this);
|
||||
mIsInSetupWizard = WizardManagerHelper.isAnySetupWizard(intent);
|
||||
|
||||
// TODO(b/37429702): Add animations and preference comparator back after initial screen is
|
||||
// loaded (ODR).
|
||||
|
|
@ -376,8 +385,6 @@ public class NetworkProviderSettings extends RestrictedDashboardFragment
|
|||
fixConnectivityItem.setVisible(!mIsGuest && (!isAirplaneModeOn || isWifiEnabled));
|
||||
}
|
||||
};
|
||||
final Intent intent = this.getIntent();
|
||||
mIsInSetupWizard = WizardManagerHelper.isAnySetupWizard(intent);
|
||||
}
|
||||
|
||||
private void updateUserType() {
|
||||
|
|
@ -428,6 +435,7 @@ public class NetworkProviderSettings extends RestrictedDashboardFragment
|
|||
if (mResetInternetPreference != null) {
|
||||
mResetInternetPreference.setVisible(false);
|
||||
}
|
||||
addMobileDataPreferenceController();
|
||||
addNetworkMobileProviderController();
|
||||
addConnectedEthernetNetworkController();
|
||||
addWifiSwitchPreferenceController();
|
||||
|
|
@ -450,6 +458,18 @@ public class NetworkProviderSettings extends RestrictedDashboardFragment
|
|||
return (context != null) && SubscriptionUtil.isSimHardwareVisible(context);
|
||||
}
|
||||
|
||||
private void addMobileDataPreferenceController() {
|
||||
if (!showAnySubscriptionInfo(getContext())) {
|
||||
return;
|
||||
}
|
||||
if (mMobileDataPreferenceController == null) {
|
||||
mMobileDataPreferenceController = new MobileDataPreferenceController(
|
||||
getContext(), PREF_KEY_MOBILE_DATA_TOGGLE, getSettingsLifecycle(),
|
||||
mSubId, mIsInSetupWizard);
|
||||
}
|
||||
mMobileDataPreferenceController.displayPreference(getPreferenceScreen());
|
||||
}
|
||||
|
||||
private void addNetworkMobileProviderController() {
|
||||
if (!showAnySubscriptionInfo(getContext())) {
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -16,9 +16,6 @@
|
|||
|
||||
package com.android.settings.network.telephony;
|
||||
|
||||
import static androidx.lifecycle.Lifecycle.Event.ON_START;
|
||||
import static androidx.lifecycle.Lifecycle.Event.ON_STOP;
|
||||
|
||||
import android.content.Context;
|
||||
import android.provider.Settings;
|
||||
import android.telephony.SubscriptionManager;
|
||||
|
|
@ -26,9 +23,10 @@ import android.telephony.TelephonyManager;
|
|||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
import androidx.lifecycle.LifecycleObserver;
|
||||
import androidx.lifecycle.DefaultLifecycleObserver;
|
||||
import androidx.lifecycle.LifecycleOwner;
|
||||
import androidx.lifecycle.OnLifecycleEvent;
|
||||
import androidx.preference.Preference;
|
||||
|
|
@ -36,6 +34,7 @@ import androidx.preference.PreferenceScreen;
|
|||
import androidx.preference.TwoStatePreference;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.datausage.DataUsageUtils;
|
||||
import com.android.settings.flags.Flags;
|
||||
import com.android.settings.network.MobileNetworkRepository;
|
||||
import com.android.settings.wifi.WifiPickerTrackerHelper;
|
||||
|
|
@ -52,7 +51,7 @@ import java.util.List;
|
|||
* Preference controller for "Mobile data"
|
||||
*/
|
||||
public class MobileDataPreferenceController extends TelephonyTogglePreferenceController
|
||||
implements LifecycleObserver, MobileNetworkRepository.MobileNetworkCallback {
|
||||
implements DefaultLifecycleObserver, MobileNetworkRepository.MobileNetworkCallback {
|
||||
|
||||
private static final String DIALOG_TAG = "MobileDataDialog";
|
||||
|
||||
|
|
@ -64,10 +63,10 @@ public class MobileDataPreferenceController extends TelephonyTogglePreferenceCon
|
|||
int mDialogType;
|
||||
@VisibleForTesting
|
||||
boolean mNeedDialog;
|
||||
boolean mIsInSetupWizard;
|
||||
|
||||
private WifiPickerTrackerHelper mWifiPickerTrackerHelper;
|
||||
protected MobileNetworkRepository mMobileNetworkRepository;
|
||||
protected LifecycleOwner mLifecycleOwner;
|
||||
private List<SubscriptionInfoEntity> mSubscriptionInfoEntityList = new ArrayList<>();
|
||||
private List<MobileNetworkInfoEntity> mMobileNetworkInfoEntityList = new ArrayList<>();
|
||||
private int mDefaultSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
|
||||
|
|
@ -75,10 +74,10 @@ public class MobileDataPreferenceController extends TelephonyTogglePreferenceCon
|
|||
MobileNetworkInfoEntity mMobileNetworkInfoEntity;
|
||||
|
||||
public MobileDataPreferenceController(Context context, String key, Lifecycle lifecycle,
|
||||
LifecycleOwner lifecycleOwner, int subId) {
|
||||
int subId, boolean isInSetupWizard) {
|
||||
this(context, key);
|
||||
mSubId = subId;
|
||||
mLifecycleOwner = lifecycleOwner;
|
||||
mIsInSetupWizard = isInSetupWizard;
|
||||
if (lifecycle != null) {
|
||||
lifecycle.addObserver(this);
|
||||
}
|
||||
|
|
@ -92,12 +91,13 @@ public class MobileDataPreferenceController extends TelephonyTogglePreferenceCon
|
|||
|
||||
@Override
|
||||
public int getAvailabilityStatus(int subId) {
|
||||
if (Flags.isDualSimOnboardingEnabled()) {
|
||||
if ((Flags.isDualSimOnboardingEnabled() && !mIsInSetupWizard)
|
||||
|| mSubscriptionManager.getActiveSubscriptionInfo(subId) == null
|
||||
|| !mSubscriptionManager.isUsableSubscriptionId(subId)
|
||||
|| !DataUsageUtils.hasMobileData(mContext)) {
|
||||
return CONDITIONALLY_UNAVAILABLE;
|
||||
}
|
||||
return subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID
|
||||
? AVAILABLE
|
||||
: AVAILABLE_UNSEARCHABLE;
|
||||
return AVAILABLE;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -106,14 +106,14 @@ public class MobileDataPreferenceController extends TelephonyTogglePreferenceCon
|
|||
mPreference = screen.findPreference(getPreferenceKey());
|
||||
}
|
||||
|
||||
@OnLifecycleEvent(ON_START)
|
||||
public void onStart() {
|
||||
mMobileNetworkRepository.addRegister(mLifecycleOwner, this, mSubId);
|
||||
@Override
|
||||
public void onResume(@NonNull LifecycleOwner owner) {
|
||||
mMobileNetworkRepository.addRegister(owner, this, mSubId);
|
||||
mMobileNetworkRepository.updateEntity();
|
||||
}
|
||||
|
||||
@OnLifecycleEvent(ON_STOP)
|
||||
public void onStop() {
|
||||
@Override
|
||||
public void onPause(@NonNull LifecycleOwner owner) {
|
||||
mMobileNetworkRepository.removeRegister(this);
|
||||
}
|
||||
|
||||
|
|
@ -174,6 +174,7 @@ public class MobileDataPreferenceController extends TelephonyTogglePreferenceCon
|
|||
return;
|
||||
}
|
||||
|
||||
mPreference.setVisible(isAvailable());
|
||||
mPreference.setChecked(isChecked());
|
||||
if (mSubscriptionInfoEntity.isOpportunistic) {
|
||||
mPreference.setEnabled(false);
|
||||
|
|
|
|||
|
|
@ -197,7 +197,7 @@ public class MobileNetworkSettings extends AbstractMobileNetworkSettings impleme
|
|||
new SmsDefaultSubscriptionController(context, KEY_SMS_PREF, getSettingsLifecycle(),
|
||||
this),
|
||||
new MobileDataPreferenceController(context, KEY_MOBILE_DATA_PREF,
|
||||
getSettingsLifecycle(), this, mSubId),
|
||||
getSettingsLifecycle(), mSubId, false),
|
||||
new ConvertToEsimPreferenceController(context, KEY_CONVERT_TO_ESIM_PREF,
|
||||
getSettingsLifecycle(), this, mSubId), eid);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -131,7 +131,7 @@ public class MobileDataPreferenceControllerComponentTest {
|
|||
URL url = new URL("https://www.google.net");
|
||||
MobileDataPreferenceController controller = new MobileDataPreferenceController(
|
||||
mInstrumentation.getTargetContext(), "mobile_data", mLifecycle,
|
||||
mLifecycleOwner, sSubscriptionId);
|
||||
sSubscriptionId, false);
|
||||
FragmentManager manager = ((FragmentActivity) activity).getSupportFragmentManager();
|
||||
controller.init(manager, sSubscriptionId, mock(SubscriptionInfoEntity.class), mock(
|
||||
MobileNetworkInfoEntity.class));
|
||||
|
|
|
|||
|
|
@ -109,7 +109,7 @@ public class MobileDataPreferenceControllerTest {
|
|||
|
||||
mPreference = new SwitchPreference(mContext);
|
||||
mController = new MobileDataPreferenceController(mContext, "mobile_data", mLifecycle,
|
||||
mLifecycleOwner, SUB_ID);
|
||||
SUB_ID, false);
|
||||
mController.init(mFragmentManager, SUB_ID, mSubInfo1, mNetworkInfo1);
|
||||
mPreference.setKey(mController.getPreferenceKey());
|
||||
mLifecycleRegistry = new LifecycleRegistry(mLifecycleOwner);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue