Handle mobile data on internet page during setup
Change-Id: Id00e9ef135cd2748376c69596979826e764e9185
This commit is contained in:
committed by
Michael Bestas
parent
13093942c1
commit
20af3047f0
@@ -79,6 +79,7 @@ import com.android.settings.network.ethernet.EthernetInterfaceDetailsFragment;
|
||||
import com.android.settings.network.ethernet.EthernetSwitchPreferenceController;
|
||||
import com.android.settings.network.ethernet.EthernetTracker;
|
||||
import com.android.settings.network.ethernet.EthernetTrackerImpl;
|
||||
import com.android.settings.network.MobileDataEnabledListener;
|
||||
import com.android.settings.search.BaseSearchIndexProvider;
|
||||
import com.android.settings.wifi.AddNetworkFragment;
|
||||
import com.android.settings.wifi.AddWifiNetworkPreference;
|
||||
@@ -123,7 +124,8 @@ import java.util.Optional;
|
||||
public class NetworkProviderSettings extends RestrictedDashboardFragment
|
||||
implements Indexable, WifiPickerTracker.WifiPickerTrackerCallback,
|
||||
WifiDialog2.WifiDialog2Listener, DialogInterface.OnDismissListener,
|
||||
AirplaneModeEnabler.OnAirplaneModeChangedListener, InternetUpdater.InternetChangeListener {
|
||||
AirplaneModeEnabler.OnAirplaneModeChangedListener, InternetUpdater.InternetChangeListener,
|
||||
MobileDataEnabledListener.Client {
|
||||
|
||||
private static final String TAG = "NetworkProviderSettings";
|
||||
// IDs of context menu
|
||||
@@ -219,6 +221,9 @@ public class NetworkProviderSettings extends RestrictedDashboardFragment
|
||||
protected WifiManager mWifiManager;
|
||||
private WifiManager.ActionListener mSaveListener;
|
||||
|
||||
int mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
|
||||
MobileDataEnabledListener mDataStateListener;
|
||||
|
||||
protected InternetResetHelper mInternetResetHelper;
|
||||
|
||||
/**
|
||||
@@ -290,6 +295,7 @@ public class NetworkProviderSettings extends RestrictedDashboardFragment
|
||||
|
||||
public NetworkProviderSettings() {
|
||||
super(DISALLOW_CONFIG_WIFI);
|
||||
mSubId = SubscriptionManager.getActiveDataSubscriptionId();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -341,6 +347,7 @@ public class NetworkProviderSettings extends RestrictedDashboardFragment
|
||||
return;
|
||||
}
|
||||
mAirplaneModeEnabler = new AirplaneModeEnabler(getContext(), this);
|
||||
mDataStateListener = new MobileDataEnabledListener(getContext(), this);
|
||||
|
||||
// TODO(b/37429702): Add animations and preference comparator back after initial screen is
|
||||
// loaded (ODR).
|
||||
@@ -593,6 +600,7 @@ public class NetworkProviderSettings extends RestrictedDashboardFragment
|
||||
return;
|
||||
}
|
||||
mAirplaneModeEnabler.start();
|
||||
mDataStateListener.start(mSubId);
|
||||
if (com.android.settings.connectivity.Flags.ethernetSettings()) {
|
||||
mEthernetTracker.registerInterfaceListener(this::onInterfaceListChanged);
|
||||
}
|
||||
@@ -624,7 +632,8 @@ public class NetworkProviderSettings extends RestrictedDashboardFragment
|
||||
}
|
||||
|
||||
changeNextButtonState(mWifiPickerTracker != null
|
||||
&& mWifiPickerTracker.getConnectedWifiEntry() != null);
|
||||
&& mWifiPickerTracker.getConnectedWifiEntry() != null
|
||||
|| getDataEnabled());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -633,6 +642,7 @@ public class NetworkProviderSettings extends RestrictedDashboardFragment
|
||||
getView().removeCallbacks(mUpdateWifiEntryPreferencesRunnable);
|
||||
getView().removeCallbacks(mHideProgressBarRunnable);
|
||||
mAirplaneModeEnabler.stop();
|
||||
mDataStateListener.stop();
|
||||
if (com.android.settings.connectivity.Flags.ethernetSettings()) {
|
||||
mEthernetTracker.unregisterInterfaceListener(this::onInterfaceListChanged);
|
||||
}
|
||||
@@ -1022,7 +1032,8 @@ public class NetworkProviderSettings extends RestrictedDashboardFragment
|
||||
setProgressBarVisible(false);
|
||||
}
|
||||
changeNextButtonState(mWifiPickerTracker != null
|
||||
&& mWifiPickerTracker.getConnectedWifiEntry() != null);
|
||||
&& mWifiPickerTracker.getConnectedWifiEntry() != null
|
||||
|| getDataEnabled());
|
||||
|
||||
// Edit the Wi-Fi network of specified SSID.
|
||||
if (mOpenSsid != null && mWifiPickerTracker != null) {
|
||||
@@ -1352,7 +1363,7 @@ public class NetworkProviderSettings extends RestrictedDashboardFragment
|
||||
* Renames/replaces "Next" button when appropriate. "Next" button usually exists in
|
||||
* Wi-Fi setup screens, not in usual wifi settings screen.
|
||||
*
|
||||
* @param enabled true when the device is connected to a wifi network.
|
||||
* @param enabled true when the device is connected to a mobile or wifi network.
|
||||
*/
|
||||
@VisibleForTesting
|
||||
void changeNextButtonState(boolean enabled) {
|
||||
@@ -1633,6 +1644,17 @@ public class NetworkProviderSettings extends RestrictedDashboardFragment
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Implementation of {@code MobileDataEnabledListener.Client}
|
||||
*/
|
||||
public void onMobileDataEnabledChange() {
|
||||
changeNextButtonState(getDataEnabled());
|
||||
}
|
||||
|
||||
boolean getDataEnabled() {
|
||||
return getContext().getSystemService(TelephonyManager.class).getDataEnabled(mSubId);
|
||||
}
|
||||
|
||||
/**
|
||||
* A Wi-Fi preference for the connected Wi-Fi network without internet access.
|
||||
*
|
||||
|
||||
@@ -20,6 +20,7 @@ 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;
|
||||
import android.telephony.TelephonyManager;
|
||||
import android.text.TextUtils;
|
||||
@@ -42,6 +43,8 @@ import com.android.settingslib.core.lifecycle.Lifecycle;
|
||||
import com.android.settingslib.mobile.dataservice.MobileNetworkInfoEntity;
|
||||
import com.android.settingslib.mobile.dataservice.SubscriptionInfoEntity;
|
||||
|
||||
import com.google.android.setupcompat.util.WizardManagerHelper;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@@ -130,6 +133,14 @@ public class MobileDataPreferenceController extends TelephonyTogglePreferenceCon
|
||||
public boolean setChecked(boolean isChecked) {
|
||||
mNeedDialog = isDialogNeeded();
|
||||
|
||||
// If we are still provisioning we need to allow enabling mobile data first.
|
||||
// By default it is not allowed to use mobile network during provisioning so
|
||||
// we need to allow it.
|
||||
if (!WizardManagerHelper.isDeviceProvisioned(mContext)) {
|
||||
Settings.Global.putInt(mContext.getContentResolver(),
|
||||
Settings.Global.DEVICE_PROVISIONING_MOBILE_DATA_ENABLED, isChecked ? 1 : 0);
|
||||
}
|
||||
|
||||
if (!mNeedDialog) {
|
||||
// Update data directly if we don't need dialog
|
||||
Log.d(DIALOG_TAG, "setMobileDataEnabled: " + isChecked);
|
||||
|
||||
Reference in New Issue
Block a user