Merge "Show dialog on Wifi, and APM' entries in Settings" into main
This commit is contained in:
@@ -16,6 +16,9 @@
|
||||
|
||||
package com.android.settings.wifi;
|
||||
|
||||
import static com.android.settings.network.SatelliteWarningDialogActivity.EXTRA_TYPE_OF_SATELLITE_WARNING_DIALOG;
|
||||
import static com.android.settings.network.SatelliteWarningDialogActivity.TYPE_IS_WIFI;
|
||||
|
||||
import android.app.settings.SettingsEnums;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
@@ -27,19 +30,26 @@ import android.net.wifi.SupplicantState;
|
||||
import android.net.wifi.WifiInfo;
|
||||
import android.net.wifi.WifiManager;
|
||||
import android.provider.Settings;
|
||||
import android.util.Log;
|
||||
import android.widget.Toast;
|
||||
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.network.SatelliteRepository;
|
||||
import com.android.settings.network.SatelliteWarningDialogActivity;
|
||||
import com.android.settings.widget.SwitchWidgetController;
|
||||
import com.android.settingslib.WirelessUtils;
|
||||
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||
|
||||
import java.util.concurrent.ExecutionException;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.concurrent.TimeoutException;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
|
||||
public class WifiEnabler implements SwitchWidgetController.OnSwitchChangeListener {
|
||||
|
||||
private static final String TAG = WifiEnabler.class.getSimpleName();
|
||||
private final SwitchWidgetController mSwitchWidget;
|
||||
private final WifiManager mWifiManager;
|
||||
private final ConnectivityManager mConnectivityManager;
|
||||
@@ -48,7 +58,9 @@ public class WifiEnabler implements SwitchWidgetController.OnSwitchChangeListene
|
||||
private Context mContext;
|
||||
private boolean mListeningToOnSwitchChange = false;
|
||||
private AtomicBoolean mConnected = new AtomicBoolean(false);
|
||||
|
||||
private SatelliteRepository mSatelliteRepository;
|
||||
@VisibleForTesting
|
||||
AtomicBoolean mIsSatelliteOn = new AtomicBoolean(false);
|
||||
|
||||
private boolean mStateMachineEvent;
|
||||
private final IntentFilter mIntentFilter;
|
||||
@@ -93,7 +105,7 @@ public class WifiEnabler implements SwitchWidgetController.OnSwitchChangeListene
|
||||
// The order matters! We really should not depend on this. :(
|
||||
mIntentFilter.addAction(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION);
|
||||
mIntentFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
|
||||
|
||||
mSatelliteRepository = new SatelliteRepository(context);
|
||||
setupSwitchController();
|
||||
}
|
||||
|
||||
@@ -124,6 +136,14 @@ public class WifiEnabler implements SwitchWidgetController.OnSwitchChangeListene
|
||||
mSwitchWidget.startListening();
|
||||
mListeningToOnSwitchChange = true;
|
||||
}
|
||||
// Refresh satellite mode status.
|
||||
try {
|
||||
mIsSatelliteOn.set(
|
||||
mSatelliteRepository.requestIsEnabled(Executors.newSingleThreadExecutor())
|
||||
.get(2000, TimeUnit.MILLISECONDS));
|
||||
} catch (ExecutionException | TimeoutException | InterruptedException e) {
|
||||
Log.e(TAG, "Error to get satellite status : " + e);
|
||||
}
|
||||
}
|
||||
|
||||
public void pause() {
|
||||
@@ -185,6 +205,18 @@ public class WifiEnabler implements SwitchWidgetController.OnSwitchChangeListene
|
||||
if (mStateMachineEvent) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// Show dialog and do nothing under satellite mode.
|
||||
if (mIsSatelliteOn.get()) {
|
||||
mContext.startActivity(
|
||||
new Intent(mContext, SatelliteWarningDialogActivity.class)
|
||||
.putExtra(
|
||||
EXTRA_TYPE_OF_SATELLITE_WARNING_DIALOG,
|
||||
TYPE_IS_WIFI)
|
||||
);
|
||||
return false;
|
||||
}
|
||||
|
||||
// Show toast message if Wi-Fi is not allowed in airplane mode
|
||||
if (isChecked && !WirelessUtils.isRadioAllowed(mContext, Settings.Global.RADIO_WIFI)) {
|
||||
Toast.makeText(mContext, R.string.wifi_in_airplane_mode, Toast.LENGTH_SHORT).show();
|
||||
|
@@ -52,6 +52,7 @@ import com.android.settings.SubSettings;
|
||||
import com.android.settings.Utils;
|
||||
import com.android.settings.core.SubSettingLauncher;
|
||||
import com.android.settings.network.NetworkProviderSettings;
|
||||
import com.android.settings.network.SatelliteRepository;
|
||||
import com.android.settings.network.WifiSwitchPreferenceController;
|
||||
import com.android.settings.slices.CustomSliceable;
|
||||
import com.android.settings.slices.SliceBackgroundWorker;
|
||||
@@ -66,6 +67,10 @@ import com.android.wifitrackerlib.WifiEntry;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.concurrent.TimeoutException;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
@@ -228,7 +233,8 @@ public class WifiSlice implements CustomSliceable {
|
||||
.setAccentColor(COLOR_NOT_TINTED)
|
||||
.setKeywords(getKeywords())
|
||||
.addRow(getHeaderRow(isWifiEnabled, wifiSliceItem));
|
||||
if (!isWiFiPermissionGranted || !mWifiRestriction.isChangeWifiStateAllowed(mContext)) {
|
||||
if (!isWiFiPermissionGranted || !mWifiRestriction.isChangeWifiStateAllowed(mContext)
|
||||
|| isSatelliteOn()) {
|
||||
return builder;
|
||||
}
|
||||
|
||||
@@ -419,4 +425,17 @@ public class WifiSlice implements CustomSliceable {
|
||||
return WifiEnterpriseRestrictionUtils.isChangeWifiStateAllowed(context);
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isSatelliteOn() {
|
||||
SatelliteRepository satelliteRepository = new SatelliteRepository(mContext);
|
||||
boolean isSatelliteOn = false;
|
||||
try {
|
||||
isSatelliteOn =
|
||||
satelliteRepository.requestIsEnabled(Executors.newSingleThreadExecutor())
|
||||
.get(2000, TimeUnit.MILLISECONDS);
|
||||
} catch (ExecutionException | TimeoutException | InterruptedException e) {
|
||||
Log.e(TAG, "Error to get satellite status : " + e);
|
||||
}
|
||||
return isSatelliteOn;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user