diff --git a/res/values/strings.xml b/res/values/strings.xml
index 621d364b275..c911e6f5b74 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -2056,6 +2056,12 @@
Make sure the device has been plugged in, charged, and turned on. If the issue continues, contact the device manufacturer
Adding \u201c%1$s\u201d isn\u2019t supported by this device
+
+ Try moving the device closer to your Wi\u2011Fi access point/router
+
+ Check the password and try again
+
+ Contact the device manufacturer
Check connection and try again
diff --git a/src/com/android/settings/wifi/dpp/WifiDppAddDeviceFragment.java b/src/com/android/settings/wifi/dpp/WifiDppAddDeviceFragment.java
index f7e89362c25..caba227777a 100644
--- a/src/com/android/settings/wifi/dpp/WifiDppAddDeviceFragment.java
+++ b/src/com/android/settings/wifi/dpp/WifiDppAddDeviceFragment.java
@@ -24,6 +24,7 @@ import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
+import android.util.SparseArray;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -61,8 +62,22 @@ public class WifiDppAddDeviceFragment extends WifiDppQrCodeBaseFragment {
}
@Override
- public void onFailure(int code) {
- Log.d(TAG, "EasyConnectConfiguratorStatusCallback.onFailure " + code);
+ public void onFailure(int code, String ssid, SparseArray channelListArray,
+ int[] operatingClassArray) {
+ Log.d(TAG, "EasyConnectConfiguratorStatusCallback.onFailure: " + code);
+ if (!TextUtils.isEmpty(ssid)) {
+ Log.d(TAG, "Tried SSID: " + ssid);
+ }
+ if (channelListArray.size() != 0) {
+ Log.d(TAG, "Tried channels: " + channelListArray);
+ }
+ if (operatingClassArray != null && operatingClassArray.length > 0) {
+ StringBuilder sb = new StringBuilder("Supported bands: ");
+ for (int i = 0; i < operatingClassArray.length; i++) {
+ sb.append(operatingClassArray[i] + " ");
+ }
+ Log.d(TAG, sb.toString());
+ }
showErrorUi(code, /* isConfigurationChange */ false);
}
@@ -150,6 +165,20 @@ public class WifiDppAddDeviceFragment extends WifiDppQrCodeBaseFragment {
throw(new IllegalStateException("Wi-Fi DPP configurator used a non-PSK/non-SAE"
+ "network to handshake"));
+ case EasyConnectStatusCallback.EASY_CONNECT_EVENT_FAILURE_CANNOT_FIND_NETWORK:
+ summaryCharSequence = getText(R.string.wifi_dpp_failure_cannot_find_network);
+ break;
+
+ case EasyConnectStatusCallback.EASY_CONNECT_EVENT_FAILURE_ENROLLEE_AUTHENTICATION:
+ summaryCharSequence = getText(R.string.wifi_dpp_failure_enrollee_authentication);
+ break;
+
+ case EasyConnectStatusCallback
+ .EASY_CONNECT_EVENT_FAILURE_ENROLLEE_REJECTED_CONFIGURATION:
+ summaryCharSequence =
+ getText(R.string.wifi_dpp_failure_enrollee_rejected_configuration);
+ break;
+
default:
throw(new IllegalStateException("Unexpected Wi-Fi DPP error"));
}
@@ -218,7 +247,8 @@ public class WifiDppAddDeviceFragment extends WifiDppQrCodeBaseFragment {
if (code == WifiDppUtils.EASY_CONNECT_EVENT_SUCCESS) {
new EasyConnectConfiguratorStatusCallback().onConfiguratorSuccess(code);
} else {
- new EasyConnectConfiguratorStatusCallback().onFailure(code);
+ new EasyConnectConfiguratorStatusCallback().onFailure(code, model.getTriedSsid(),
+ model.getTriedChannels(), model.getBandArray());
}
});
}
diff --git a/src/com/android/settings/wifi/dpp/WifiDppInitiatorViewModel.java b/src/com/android/settings/wifi/dpp/WifiDppInitiatorViewModel.java
index f48ec7c3fe3..05febc510f0 100644
--- a/src/com/android/settings/wifi/dpp/WifiDppInitiatorViewModel.java
+++ b/src/com/android/settings/wifi/dpp/WifiDppInitiatorViewModel.java
@@ -19,14 +19,18 @@ package com.android.settings.wifi.dpp;
import android.app.Application;
import android.net.wifi.EasyConnectStatusCallback;
import android.net.wifi.WifiManager;
+import android.util.SparseArray;
-import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.AndroidViewModel;
+import androidx.lifecycle.MutableLiveData;
public class WifiDppInitiatorViewModel extends AndroidViewModel {
private MutableLiveData mEnrolleeSuccessNetworkId;
private MutableLiveData mStatusCode;
private boolean mIsWifiDppHandshaking;
+ private String mTriedSsid;
+ private SparseArray mTriedChannels;
+ private int[] mBandArray;
public WifiDppInitiatorViewModel(Application application) {
super(application);
@@ -48,6 +52,18 @@ public class WifiDppInitiatorViewModel extends AndroidViewModel {
return mStatusCode;
}
+ String getTriedSsid() {
+ return mTriedSsid;
+ }
+
+ SparseArray getTriedChannels() {
+ return mTriedChannels;
+ }
+
+ int[] getBandArray() {
+ return mBandArray;
+ }
+
boolean isWifiDppHandshaking() {
return mIsWifiDppHandshaking;
}
@@ -83,8 +99,12 @@ public class WifiDppInitiatorViewModel extends AndroidViewModel {
}
@Override
- public void onFailure(int code) {
+ public void onFailure(int code, String ssid, SparseArray channelListArray,
+ int[] operatingClassArray) {
mIsWifiDppHandshaking = false;
+ mTriedSsid = ssid;
+ mTriedChannels = channelListArray;
+ mBandArray = operatingClassArray;
mStatusCode.setValue(code);
}