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