Don't crash Network settings if Wi-Fi is not supported.
Bug: 209906859 Test: flash & boot wifi-less device Change-Id: If212e7a667e60812c14ece9ef4386de0efb606c2
This commit is contained in:
@@ -19,8 +19,6 @@ package com.android.settings.network;
|
|||||||
import static android.net.wifi.WifiConfiguration.NetworkSelectionStatus.NETWORK_SELECTION_ENABLED;
|
import static android.net.wifi.WifiConfiguration.NetworkSelectionStatus.NETWORK_SELECTION_ENABLED;
|
||||||
import static android.os.UserManager.DISALLOW_CONFIG_WIFI;
|
import static android.os.UserManager.DISALLOW_CONFIG_WIFI;
|
||||||
|
|
||||||
import static com.android.settings.Settings.WifiSettingsActivity;
|
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.app.Dialog;
|
import android.app.Dialog;
|
||||||
import android.app.settings.SettingsEnums;
|
import android.app.settings.SettingsEnums;
|
||||||
@@ -339,6 +337,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void addWifiSwitchPreferenceController() {
|
private void addWifiSwitchPreferenceController() {
|
||||||
|
if (mWifiManager == null) return;
|
||||||
if (mWifiSwitchPreferenceController == null) {
|
if (mWifiSwitchPreferenceController == null) {
|
||||||
mWifiSwitchPreferenceController =
|
mWifiSwitchPreferenceController =
|
||||||
new WifiSwitchPreferenceController(getContext(), getSettingsLifecycle());
|
new WifiSwitchPreferenceController(getContext(), getSettingsLifecycle());
|
||||||
@@ -350,9 +349,11 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
|
|||||||
public void onActivityCreated(Bundle savedInstanceState) {
|
public void onActivityCreated(Bundle savedInstanceState) {
|
||||||
super.onActivityCreated(savedInstanceState);
|
super.onActivityCreated(savedInstanceState);
|
||||||
|
|
||||||
|
if (mWifiManager != null) {
|
||||||
mWifiPickerTrackerHelper =
|
mWifiPickerTrackerHelper =
|
||||||
new WifiPickerTrackerHelper(getSettingsLifecycle(), getContext(), this);
|
new WifiPickerTrackerHelper(getSettingsLifecycle(), getContext(), this);
|
||||||
mWifiPickerTracker = mWifiPickerTrackerHelper.getWifiPickerTracker();
|
mWifiPickerTracker = mWifiPickerTrackerHelper.getWifiPickerTracker();
|
||||||
|
}
|
||||||
mInternetUpdater = new InternetUpdater(getContext(), getSettingsLifecycle(), this);
|
mInternetUpdater = new InternetUpdater(getContext(), getSettingsLifecycle(), this);
|
||||||
|
|
||||||
mConnectListener = new WifiConnectListener(getActivity());
|
mConnectListener = new WifiConnectListener(getActivity());
|
||||||
@@ -419,7 +420,8 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
|
|||||||
public void onStart() {
|
public void onStart() {
|
||||||
super.onStart();
|
super.onStart();
|
||||||
if (mIsViewLoading) {
|
if (mIsViewLoading) {
|
||||||
final long delayMillis = mWifiManager.isWifiEnabled() ? 1000 : 100;
|
final long delayMillis = (mWifiManager != null && mWifiManager.isWifiEnabled())
|
||||||
|
? 1000 : 100;
|
||||||
getView().postDelayed(mRemoveLoadingRunnable, delayMillis);
|
getView().postDelayed(mRemoveLoadingRunnable, delayMillis);
|
||||||
}
|
}
|
||||||
if (mIsRestricted) {
|
if (mIsRestricted) {
|
||||||
@@ -454,7 +456,8 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
|
|||||||
restrictUi();
|
restrictUi();
|
||||||
}
|
}
|
||||||
|
|
||||||
changeNextButtonState(mWifiPickerTracker.getConnectedWifiEntry() != null);
|
changeNextButtonState(mWifiPickerTracker != null
|
||||||
|
&& mWifiPickerTracker.getConnectedWifiEntry() != null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -479,7 +482,9 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
|
|||||||
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||||
super.onActivityResult(requestCode, resultCode, data);
|
super.onActivityResult(requestCode, resultCode, data);
|
||||||
|
|
||||||
if (requestCode == ADD_NETWORK_REQUEST) {
|
if (mWifiManager == null) {
|
||||||
|
// Do nothing
|
||||||
|
} else if (requestCode == ADD_NETWORK_REQUEST) {
|
||||||
handleAddNetworkRequest(resultCode, data);
|
handleAddNetworkRequest(resultCode, data);
|
||||||
return;
|
return;
|
||||||
} else if (requestCode == REQUEST_CODE_WIFI_DPP_ENROLLEE_QR_CODE_SCANNER) {
|
} else if (requestCode == REQUEST_CODE_WIFI_DPP_ENROLLEE_QR_CODE_SCANNER) {
|
||||||
@@ -715,7 +720,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
|
|||||||
/** Called when the state of Wifi has changed. */
|
/** Called when the state of Wifi has changed. */
|
||||||
@Override
|
@Override
|
||||||
public void onWifiStateChanged() {
|
public void onWifiStateChanged() {
|
||||||
if (mIsRestricted) {
|
if (mIsRestricted || mWifiManager == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
final int wifiState = mWifiPickerTracker.getWifiState();
|
final int wifiState = mWifiPickerTracker.getWifiState();
|
||||||
@@ -765,7 +770,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
|
|||||||
}
|
}
|
||||||
|
|
||||||
final LocationManager locationManager = context.getSystemService(LocationManager.class);
|
final LocationManager locationManager = context.getSystemService(LocationManager.class);
|
||||||
if (isWifiEnabled || !locationManager.isLocationEnabled()
|
if (mWifiManager == null || isWifiEnabled || !locationManager.isLocationEnabled()
|
||||||
|| !mWifiManager.isScanAlwaysAvailable()) {
|
|| !mWifiManager.isScanAlwaysAvailable()) {
|
||||||
mWifiStatusMessagePreference.setVisible(false);
|
mWifiStatusMessagePreference.setVisible(false);
|
||||||
return;
|
return;
|
||||||
@@ -796,10 +801,11 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
|
|||||||
} else {
|
} else {
|
||||||
updateWifiEntryPreferencesDelayed();
|
updateWifiEntryPreferencesDelayed();
|
||||||
}
|
}
|
||||||
changeNextButtonState(mWifiPickerTracker.getConnectedWifiEntry() != null);
|
changeNextButtonState(mWifiPickerTracker != null
|
||||||
|
&& mWifiPickerTracker.getConnectedWifiEntry() != null);
|
||||||
|
|
||||||
// Edit the Wi-Fi network of specified SSID.
|
// Edit the Wi-Fi network of specified SSID.
|
||||||
if (mOpenSsid != null) {
|
if (mOpenSsid != null && mWifiPickerTracker != null) {
|
||||||
Optional<WifiEntry> matchedWifiEntry = mWifiPickerTracker.getWifiEntries().stream()
|
Optional<WifiEntry> matchedWifiEntry = mWifiPickerTracker.getWifiEntries().stream()
|
||||||
.filter(wifiEntry -> TextUtils.equals(mOpenSsid, wifiEntry.getSsid()))
|
.filter(wifiEntry -> TextUtils.equals(mOpenSsid, wifiEntry.getSsid()))
|
||||||
.filter(wifiEntry -> wifiEntry.getSecurity() != WifiEntry.SECURITY_NONE
|
.filter(wifiEntry -> wifiEntry.getSecurity() != WifiEntry.SECURITY_NONE
|
||||||
@@ -836,7 +842,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
|
|||||||
*/
|
*/
|
||||||
private void updateWifiEntryPreferencesDelayed() {
|
private void updateWifiEntryPreferencesDelayed() {
|
||||||
// Safeguard from some delayed event handling
|
// Safeguard from some delayed event handling
|
||||||
if (getActivity() != null && !mIsRestricted
|
if (getActivity() != null && !mIsRestricted && mWifiPickerTracker != null
|
||||||
&& mWifiPickerTracker.getWifiState() == WifiManager.WIFI_STATE_ENABLED) {
|
&& mWifiPickerTracker.getWifiState() == WifiManager.WIFI_STATE_ENABLED) {
|
||||||
final View view = getView();
|
final View view = getView();
|
||||||
final Handler handler = view.getHandler();
|
final Handler handler = view.getHandler();
|
||||||
@@ -854,7 +860,8 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// in case state has changed
|
// in case state has changed
|
||||||
if (mWifiPickerTracker.getWifiState() != WifiManager.WIFI_STATE_ENABLED) {
|
if (mWifiPickerTracker == null
|
||||||
|
|| mWifiPickerTracker.getWifiState() != WifiManager.WIFI_STATE_ENABLED) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1018,8 +1025,10 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
|
|||||||
? R.string.wifi_configure_settings_preference_summary_wakeup_on
|
? R.string.wifi_configure_settings_preference_summary_wakeup_on
|
||||||
: R.string.wifi_configure_settings_preference_summary_wakeup_off));
|
: R.string.wifi_configure_settings_preference_summary_wakeup_off));
|
||||||
|
|
||||||
final int numSavedNetworks = mWifiPickerTracker.getNumSavedNetworks();
|
final int numSavedNetworks = mWifiPickerTracker == null ? 0 :
|
||||||
final int numSavedSubscriptions = mWifiPickerTracker.getNumSavedSubscriptions();
|
mWifiPickerTracker.getNumSavedNetworks();
|
||||||
|
final int numSavedSubscriptions = mWifiPickerTracker == null ? 0 :
|
||||||
|
mWifiPickerTracker.getNumSavedSubscriptions();
|
||||||
if (numSavedNetworks + numSavedSubscriptions > 0) {
|
if (numSavedNetworks + numSavedSubscriptions > 0) {
|
||||||
mSavedNetworksPreference.setVisible(true);
|
mSavedNetworksPreference.setVisible(true);
|
||||||
mSavedNetworksPreference.setSummary(
|
mSavedNetworksPreference.setSummary(
|
||||||
@@ -1054,7 +1063,8 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
|
|||||||
final Context context = getContext();
|
final Context context = getContext();
|
||||||
final PowerManager powerManager = context.getSystemService(PowerManager.class);
|
final PowerManager powerManager = context.getSystemService(PowerManager.class);
|
||||||
final ContentResolver contentResolver = context.getContentResolver();
|
final ContentResolver contentResolver = context.getContentResolver();
|
||||||
return mWifiManager.isAutoWakeupEnabled()
|
return mWifiManager != null
|
||||||
|
&& mWifiManager.isAutoWakeupEnabled()
|
||||||
&& mWifiManager.isScanAlwaysAvailable()
|
&& mWifiManager.isScanAlwaysAvailable()
|
||||||
&& Settings.Global.getInt(contentResolver,
|
&& Settings.Global.getInt(contentResolver,
|
||||||
Settings.Global.AIRPLANE_MODE_ON, 0) == 0
|
Settings.Global.AIRPLANE_MODE_ON, 0) == 0
|
||||||
@@ -1075,7 +1085,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
|
|||||||
private void handleAddNetworkSubmitEvent(Intent data) {
|
private void handleAddNetworkSubmitEvent(Intent data) {
|
||||||
final WifiConfiguration wifiConfiguration = data.getParcelableExtra(
|
final WifiConfiguration wifiConfiguration = data.getParcelableExtra(
|
||||||
AddNetworkFragment.WIFI_CONFIG_KEY);
|
AddNetworkFragment.WIFI_CONFIG_KEY);
|
||||||
if (wifiConfiguration != null) {
|
if (wifiConfiguration != null && mWifiManager != null) {
|
||||||
mWifiManager.save(wifiConfiguration, mSaveListener);
|
mWifiManager.save(wifiConfiguration, mSaveListener);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1112,6 +1122,8 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSubmit(WifiDialog2 dialog) {
|
public void onSubmit(WifiDialog2 dialog) {
|
||||||
|
if (mWifiManager == null) return;
|
||||||
|
|
||||||
final int dialogMode = dialog.getMode();
|
final int dialogMode = dialog.getMode();
|
||||||
final WifiConfiguration config = dialog.getController().getConfig();
|
final WifiConfiguration config = dialog.getController().getConfig();
|
||||||
final WifiEntry wifiEntry = dialog.getWifiEntry();
|
final WifiEntry wifiEntry = dialog.getWifiEntry();
|
||||||
@@ -1182,6 +1194,8 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
|
|||||||
final List<String> keys = super.getNonIndexableKeys(context);
|
final List<String> keys = super.getNonIndexableKeys(context);
|
||||||
|
|
||||||
final WifiManager wifiManager = context.getSystemService(WifiManager.class);
|
final WifiManager wifiManager = context.getSystemService(WifiManager.class);
|
||||||
|
if (wifiManager == null) return keys;
|
||||||
|
|
||||||
if (WifiSavedConfigUtils.getAllConfigsCount(context, wifiManager) == 0) {
|
if (WifiSavedConfigUtils.getAllConfigsCount(context, wifiManager) == 0) {
|
||||||
keys.add(PREF_KEY_SAVED_NETWORKS);
|
keys.add(PREF_KEY_SAVED_NETWORKS);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user