[Wi-Fi] Fix exception when 'Add device' with a Wi-Fi suggestion network
WifiEntry#getWifiConfiguration() may return null when
WifiEntry#isSaved() is true. Use WifiEntry#canEasyConnect()
which checks if WifiEntry#getWifiConfiguration() returns
a non-null value.
Bug: 153029289
Test: manual
Connect to a WPA2 Wi-Fi network, click 'Add device'
in Wi-Fi detail page and see if it crashes.
Change-Id: Ia15503eea795fdd54826699828f02c9ff95dcefa
diff --git a/src/com/android/settings/wifi/details2/AddDevicePreferenceController2.java b/src/com/android/settings/wifi/details2/AddDevicePreferenceController2.java
index fc7b5ce..8f9741a 100644
--- a/src/com/android/settings/wifi/details2/AddDevicePreferenceController2.java
+++ b/src/com/android/settings/wifi/details2/AddDevicePreferenceController2.java
@@ -51,8 +51,7 @@
@Override
public int getAvailabilityStatus() {
- return WifiDppUtils.isSupportConfiguratorQrCodeScanner(mContext, mWifiEntry) ? AVAILABLE
- : CONDITIONALLY_UNAVAILABLE;
+ return mWifiEntry.canEasyConnect() ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
}
@Override
diff --git a/src/com/android/settings/wifi/dpp/WifiDppUtils.java b/src/com/android/settings/wifi/dpp/WifiDppUtils.java
index 51cb351..7a502c9 100644
--- a/src/com/android/settings/wifi/dpp/WifiDppUtils.java
+++ b/src/com/android/settings/wifi/dpp/WifiDppUtils.java
@@ -297,7 +297,7 @@
public static Intent getConfiguratorQrCodeScannerIntentOrNull(Context context,
WifiManager wifiManager, WifiEntry wifiEntry) {
final Intent intent = new Intent(context, WifiDppConfiguratorActivity.class);
- if (isSupportConfiguratorQrCodeScanner(context, wifiEntry)) {
+ if (wifiEntry.canEasyConnect()) {
intent.setAction(WifiDppConfiguratorActivity.ACTION_CONFIGURATOR_QR_CODE_SCANNER);
} else {
return null;
@@ -453,19 +453,6 @@
}
/**
- * Checks if QR code scanner supports to config other devices with the Wi-Fi network
- *
- * @param context The context to use for {@link WifiManager#isEasyConnectSupported()}
- * @param wifiEntry The {@link WifiEntry} of the Wi-Fi network
- */
- public static boolean isSupportConfiguratorQrCodeScanner(Context context, WifiEntry wifiEntry) {
- if (wifiEntry.isSubscription()) {
- return false;
- }
- return isSupportWifiDpp(context, wifiEntry.getSecurity());
- }
-
- /**
* Checks if QR code generator supports to config other devices with the Wi-Fi network
*
* @param context The context to use for {@code WifiManager}