From 959e7cd704313136f99512d521b13c236fdf6b9c Mon Sep 17 00:00:00 2001 From: Tomasz Wasilczyk Date: Fri, 10 Dec 2021 09:05:12 -0800 Subject: [PATCH] Don't crash quick settings if Wi-Fi is not supported. Bug: 209906859 Test: flash wifi-less device, tap around quick settings Change-Id: Iee8b3bf33c2abfb507b89db4a6781fb832571139 --- .../android/systemui/qs/tiles/dialog/InternetDialog.java | 6 ++++-- .../systemui/qs/tiles/dialog/InternetDialogController.java | 2 +- .../statusbar/connectivity/AccessPointControllerImpl.java | 5 +++++ 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialog.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialog.java index 26c89ff830767..ed52ea720a92d 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialog.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialog.java @@ -320,7 +320,7 @@ public class InternetDialog extends SystemUIDialog implements showProgressBar(); final boolean isDeviceLocked = mInternetDialogController.isDeviceLocked(); - final boolean isWifiEnabled = mWifiManager.isWifiEnabled(); + final boolean isWifiEnabled = mWifiManager != null && mWifiManager.isWifiEnabled(); final boolean isWifiScanEnabled = mInternetDialogController.isWifiScanEnabled(); updateWifiToggle(isWifiEnabled, isDeviceLocked); updateConnectedWifi(isWifiEnabled, isDeviceLocked); @@ -350,6 +350,7 @@ public class InternetDialog extends SystemUIDialog implements mSeeAllLayout.setOnClickListener(v -> onClickSeeMoreButton()); mWiFiToggle.setOnCheckedChangeListener( (buttonView, isChecked) -> { + if (mWifiManager == null) return; buttonView.setChecked(isChecked); mWifiManager.setWifiEnabled(isChecked); }); @@ -375,8 +376,9 @@ public class InternetDialog extends SystemUIDialog implements Log.d(TAG, "setMobileDataLayout, isCarrierNetworkActive = " + isCarrierNetworkActive); } + boolean isWifiEnabled = mWifiManager != null && mWifiManager.isWifiEnabled(); if (!mInternetDialogController.hasActiveSubId() - && (!mWifiManager.isWifiEnabled() || !isCarrierNetworkActive)) { + && (!isWifiEnabled || !isCarrierNetworkActive)) { mMobileNetworkLayout.setVisibility(View.GONE); } else { mMobileNetworkLayout.setVisibility(View.VISIBLE); diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogController.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogController.java index 6f63a08c6c0f5..da95bf9a3f6b1 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogController.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogController.java @@ -826,7 +826,7 @@ public class InternetDialogController implements AccessPointController.AccessPoi if (!mLocationController.isLocationEnabled()) { return false; } - return mWifiManager.isScanAlwaysAvailable(); + return mWifiManager != null && mWifiManager.isScanAlwaysAvailable(); } static class WifiEntryConnectCallback implements WifiEntry.ConnectCallback { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/connectivity/AccessPointControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/connectivity/AccessPointControllerImpl.java index 7bf710c053a75..c9ce12a6859ea 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/connectivity/AccessPointControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/connectivity/AccessPointControllerImpl.java @@ -117,6 +117,7 @@ public class AccessPointControllerImpl implements AccessPointController, } public boolean canConfigWifi() { + if (!mWifiPickerTrackerFactory.isSupported()) return false; return !mUserManager.hasUserRestriction(UserManager.DISALLOW_CONFIG_WIFI, new UserHandle(mCurrentUser)); } @@ -312,6 +313,10 @@ public class AccessPointControllerImpl implements AccessPointController, mWorkerHandler = workerHandler; } + private boolean isSupported() { + return mWifiManager != null; + } + /** * Create a {@link WifiPickerTracker} *