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}
