Handle mobile data on internet page during setup
Change-Id: Id00e9ef135cd2748376c69596979826e764e9185
This commit is contained in:
parent
b3c3cdfbf4
commit
6ee00c8ce9
2 changed files with 38 additions and 4 deletions
|
|
@ -37,6 +37,7 @@ import android.os.PowerManager;
|
|||
import android.os.UserHandle;
|
||||
import android.os.UserManager;
|
||||
import android.provider.Settings;
|
||||
import android.telephony.SubscriptionManager;
|
||||
import android.telephony.TelephonyManager;
|
||||
import android.text.TextUtils;
|
||||
import android.util.EventLog;
|
||||
|
|
@ -70,6 +71,7 @@ import com.android.settings.core.SubSettingLauncher;
|
|||
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.search.BaseSearchIndexProvider;
|
||||
import com.android.settings.wifi.AddNetworkFragment;
|
||||
import com.android.settings.wifi.AddWifiNetworkPreference;
|
||||
|
|
@ -112,7 +114,8 @@ import java.util.Optional;
|
|||
public class NetworkProviderSettings extends RestrictedSettingsFragment
|
||||
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
|
||||
|
|
@ -205,6 +208,9 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
|
|||
protected WifiManager mWifiManager;
|
||||
private WifiManager.ActionListener mSaveListener;
|
||||
|
||||
int mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
|
||||
MobileDataEnabledListener mDataStateListener;
|
||||
|
||||
protected InternetResetHelper mInternetResetHelper;
|
||||
|
||||
/**
|
||||
|
|
@ -268,6 +274,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
|
|||
|
||||
public NetworkProviderSettings() {
|
||||
super(DISALLOW_CONFIG_WIFI);
|
||||
mSubId = SubscriptionManager.getActiveDataSubscriptionId();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -319,6 +326,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
|
|||
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).
|
||||
|
|
@ -539,6 +547,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
|
|||
return;
|
||||
}
|
||||
mAirplaneModeEnabler.start();
|
||||
mDataStateListener.start(mSubId);
|
||||
}
|
||||
|
||||
private void restrictUi() {
|
||||
|
|
@ -567,7 +576,8 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
|
|||
}
|
||||
|
||||
changeNextButtonState(mWifiPickerTracker != null
|
||||
&& mWifiPickerTracker.getConnectedWifiEntry() != null);
|
||||
&& mWifiPickerTracker.getConnectedWifiEntry() != null
|
||||
|| getDataEnabled());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -576,6 +586,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
|
|||
getView().removeCallbacks(mUpdateWifiEntryPreferencesRunnable);
|
||||
getView().removeCallbacks(mHideProgressBarRunnable);
|
||||
mAirplaneModeEnabler.stop();
|
||||
mDataStateListener.stop();
|
||||
super.onStop();
|
||||
}
|
||||
|
||||
|
|
@ -954,7 +965,8 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
|
|||
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) {
|
||||
|
|
@ -1241,7 +1253,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
|
|||
* 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) {
|
||||
|
|
@ -1522,6 +1534,17 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 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);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue