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.EthernetSwitchPreferenceController;
|
||||||
import com.android.settings.network.ethernet.EthernetTracker;
|
import com.android.settings.network.ethernet.EthernetTracker;
|
||||||
import com.android.settings.network.ethernet.EthernetTrackerImpl;
|
import com.android.settings.network.ethernet.EthernetTrackerImpl;
|
||||||
|
import com.android.settings.network.MobileDataEnabledListener;
|
||||||
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;
|
||||||
@@ -123,7 +124,8 @@ import java.util.Optional;
|
|||||||
public class NetworkProviderSettings extends RestrictedDashboardFragment
|
public class NetworkProviderSettings extends RestrictedDashboardFragment
|
||||||
implements Indexable, WifiPickerTracker.WifiPickerTrackerCallback,
|
implements Indexable, WifiPickerTracker.WifiPickerTrackerCallback,
|
||||||
WifiDialog2.WifiDialog2Listener, DialogInterface.OnDismissListener,
|
WifiDialog2.WifiDialog2Listener, DialogInterface.OnDismissListener,
|
||||||
AirplaneModeEnabler.OnAirplaneModeChangedListener, InternetUpdater.InternetChangeListener {
|
AirplaneModeEnabler.OnAirplaneModeChangedListener, InternetUpdater.InternetChangeListener,
|
||||||
|
MobileDataEnabledListener.Client {
|
||||||
|
|
||||||
private static final String TAG = "NetworkProviderSettings";
|
private static final String TAG = "NetworkProviderSettings";
|
||||||
// IDs of context menu
|
// IDs of context menu
|
||||||
@@ -219,6 +221,9 @@ public class NetworkProviderSettings extends RestrictedDashboardFragment
|
|||||||
protected WifiManager mWifiManager;
|
protected WifiManager mWifiManager;
|
||||||
private WifiManager.ActionListener mSaveListener;
|
private WifiManager.ActionListener mSaveListener;
|
||||||
|
|
||||||
|
int mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
|
||||||
|
MobileDataEnabledListener mDataStateListener;
|
||||||
|
|
||||||
protected InternetResetHelper mInternetResetHelper;
|
protected InternetResetHelper mInternetResetHelper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -290,6 +295,7 @@ public class NetworkProviderSettings extends RestrictedDashboardFragment
|
|||||||
|
|
||||||
public NetworkProviderSettings() {
|
public NetworkProviderSettings() {
|
||||||
super(DISALLOW_CONFIG_WIFI);
|
super(DISALLOW_CONFIG_WIFI);
|
||||||
|
mSubId = SubscriptionManager.getActiveDataSubscriptionId();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -341,6 +347,7 @@ public class NetworkProviderSettings extends RestrictedDashboardFragment
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
mAirplaneModeEnabler = new AirplaneModeEnabler(getContext(), this);
|
mAirplaneModeEnabler = new AirplaneModeEnabler(getContext(), this);
|
||||||
|
mDataStateListener = new MobileDataEnabledListener(getContext(), this);
|
||||||
|
|
||||||
// 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).
|
||||||
@@ -593,6 +600,7 @@ public class NetworkProviderSettings extends RestrictedDashboardFragment
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
mAirplaneModeEnabler.start();
|
mAirplaneModeEnabler.start();
|
||||||
|
mDataStateListener.start(mSubId);
|
||||||
if (com.android.settings.connectivity.Flags.ethernetSettings()) {
|
if (com.android.settings.connectivity.Flags.ethernetSettings()) {
|
||||||
mEthernetTracker.registerInterfaceListener(this::onInterfaceListChanged);
|
mEthernetTracker.registerInterfaceListener(this::onInterfaceListChanged);
|
||||||
}
|
}
|
||||||
@@ -624,7 +632,8 @@ public class NetworkProviderSettings extends RestrictedDashboardFragment
|
|||||||
}
|
}
|
||||||
|
|
||||||
changeNextButtonState(mWifiPickerTracker != null
|
changeNextButtonState(mWifiPickerTracker != null
|
||||||
&& mWifiPickerTracker.getConnectedWifiEntry() != null);
|
&& mWifiPickerTracker.getConnectedWifiEntry() != null
|
||||||
|
|| getDataEnabled());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -633,6 +642,7 @@ public class NetworkProviderSettings extends RestrictedDashboardFragment
|
|||||||
getView().removeCallbacks(mUpdateWifiEntryPreferencesRunnable);
|
getView().removeCallbacks(mUpdateWifiEntryPreferencesRunnable);
|
||||||
getView().removeCallbacks(mHideProgressBarRunnable);
|
getView().removeCallbacks(mHideProgressBarRunnable);
|
||||||
mAirplaneModeEnabler.stop();
|
mAirplaneModeEnabler.stop();
|
||||||
|
mDataStateListener.stop();
|
||||||
if (com.android.settings.connectivity.Flags.ethernetSettings()) {
|
if (com.android.settings.connectivity.Flags.ethernetSettings()) {
|
||||||
mEthernetTracker.unregisterInterfaceListener(this::onInterfaceListChanged);
|
mEthernetTracker.unregisterInterfaceListener(this::onInterfaceListChanged);
|
||||||
}
|
}
|
||||||
@@ -1022,7 +1032,8 @@ public class NetworkProviderSettings extends RestrictedDashboardFragment
|
|||||||
setProgressBarVisible(false);
|
setProgressBarVisible(false);
|
||||||
}
|
}
|
||||||
changeNextButtonState(mWifiPickerTracker != null
|
changeNextButtonState(mWifiPickerTracker != null
|
||||||
&& mWifiPickerTracker.getConnectedWifiEntry() != null);
|
&& mWifiPickerTracker.getConnectedWifiEntry() != null
|
||||||
|
|| getDataEnabled());
|
||||||
|
|
||||||
// Edit the Wi-Fi network of specified SSID.
|
// Edit the Wi-Fi network of specified SSID.
|
||||||
if (mOpenSsid != null && mWifiPickerTracker != null) {
|
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
|
* Renames/replaces "Next" button when appropriate. "Next" button usually exists in
|
||||||
* Wi-Fi setup screens, not in usual wifi settings screen.
|
* 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
|
@VisibleForTesting
|
||||||
void changeNextButtonState(boolean enabled) {
|
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.
|
* 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 static androidx.lifecycle.Lifecycle.Event.ON_STOP;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.provider.Settings;
|
||||||
import android.telephony.SubscriptionManager;
|
import android.telephony.SubscriptionManager;
|
||||||
import android.telephony.TelephonyManager;
|
import android.telephony.TelephonyManager;
|
||||||
import android.text.TextUtils;
|
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.MobileNetworkInfoEntity;
|
||||||
import com.android.settingslib.mobile.dataservice.SubscriptionInfoEntity;
|
import com.android.settingslib.mobile.dataservice.SubscriptionInfoEntity;
|
||||||
|
|
||||||
|
import com.google.android.setupcompat.util.WizardManagerHelper;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -130,6 +133,14 @@ public class MobileDataPreferenceController extends TelephonyTogglePreferenceCon
|
|||||||
public boolean setChecked(boolean isChecked) {
|
public boolean setChecked(boolean isChecked) {
|
||||||
mNeedDialog = isDialogNeeded();
|
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) {
|
if (!mNeedDialog) {
|
||||||
// Update data directly if we don't need dialog
|
// Update data directly if we don't need dialog
|
||||||
Log.d(DIALOG_TAG, "setMobileDataEnabled: " + isChecked);
|
Log.d(DIALOG_TAG, "setMobileDataEnabled: " + isChecked);
|
||||||
|
|||||||
Reference in New Issue
Block a user