Implement Wi-Fi DPP flow
1. As DPP configurator initiator. 2. As DPP enrollee initiator. 3. Pass whole DPP url to DPP API due to API cahnged. Bug: 122331217 Test: manual test Change-Id: I8005b78b82453badf253dbde8022ff20722b39fd
This commit is contained in:
@@ -18,7 +18,10 @@ package com.android.settings.wifi.dpp;
|
|||||||
|
|
||||||
import android.app.ActionBar;
|
import android.app.ActionBar;
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.net.wifi.WifiManager;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.util.Log;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
@@ -35,11 +38,42 @@ import com.android.settings.R;
|
|||||||
* to the Wi-Fi network.
|
* to the Wi-Fi network.
|
||||||
*/
|
*/
|
||||||
public class WifiDppAddDeviceFragment extends WifiDppQrCodeBaseFragment {
|
public class WifiDppAddDeviceFragment extends WifiDppQrCodeBaseFragment {
|
||||||
|
private static final String TAG = "WifiDppAddDeviceFragment";
|
||||||
|
|
||||||
private ImageView mWifiApPictureView;
|
private ImageView mWifiApPictureView;
|
||||||
private TextView mChooseDifferentNetwork;
|
private TextView mChooseDifferentNetwork;
|
||||||
private Button mButtonLeft;
|
private Button mButtonLeft;
|
||||||
private Button mButtonRight;
|
private Button mButtonRight;
|
||||||
|
|
||||||
|
private class DppStatusCallback extends android.net.wifi.DppStatusCallback {
|
||||||
|
@Override
|
||||||
|
public void onEnrolleeSuccess(int newNetworkId) {
|
||||||
|
// Do nothing
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onConfiguratorSuccess(int code) {
|
||||||
|
// Update success UI.
|
||||||
|
mTitle.setText(R.string.wifi_dpp_wifi_shared_with_device);
|
||||||
|
mSummary.setVisibility(View.INVISIBLE);
|
||||||
|
mButtonLeft.setText(R.string.wifi_dpp_add_another_device);
|
||||||
|
mButtonLeft.setOnClickListener(v -> getFragmentManager().popBackStack());
|
||||||
|
mButtonRight.setText(R.string.done);
|
||||||
|
mButtonRight.setOnClickListener(v -> getActivity().finish());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFailure(int code) {
|
||||||
|
//TODO(b/122429170): Show DPP configuration error state UI
|
||||||
|
Log.d(TAG, "DppStatusCallback.onFailure " + code);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onProgress(int code) {
|
||||||
|
// Do nothing
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getMetricsCategory() {
|
public int getMetricsCategory() {
|
||||||
return MetricsProto.MetricsEvent.SETTINGS_WIFI_DPP_CONFIGURATOR;
|
return MetricsProto.MetricsEvent.SETTINGS_WIFI_DPP_CONFIGURATOR;
|
||||||
@@ -86,6 +120,11 @@ public class WifiDppAddDeviceFragment extends WifiDppQrCodeBaseFragment {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void startWifiDppInitiator() {
|
private void startWifiDppInitiator() {
|
||||||
//TODO(b/122331217): starts Wi-Fi DPP initiator handshake here
|
final String enrolleeUri = ((WifiDppConfiguratorActivity) getActivity()).getDppUri();
|
||||||
|
final int networkId =
|
||||||
|
((WifiDppConfiguratorActivity) getActivity()).getWifiNetworkConfig().getNetworkId();
|
||||||
|
final WifiManager wifiManager = getContext().getSystemService(WifiManager.class);
|
||||||
|
wifiManager.startDppAsConfiguratorInitiator(enrolleeUri, networkId,
|
||||||
|
WifiManager.DPP_NETWORK_ROLE_STA, /* handler */ null, new DppStatusCallback());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -66,11 +66,8 @@ public class WifiDppConfiguratorActivity extends InstrumentedActivity implements
|
|||||||
/** The Wi-Fi network which will be configured */
|
/** The Wi-Fi network which will be configured */
|
||||||
private WifiNetworkConfig mWifiNetworkConfig;
|
private WifiNetworkConfig mWifiNetworkConfig;
|
||||||
|
|
||||||
/** The public key from Wi-Fi DPP QR code */
|
/** The uri from Wi-Fi DPP QR code */
|
||||||
private String mPublicKey;
|
private String mDppUri;
|
||||||
|
|
||||||
/** The information from Wi-Fi DPP QR code */
|
|
||||||
private String mInformation;
|
|
||||||
|
|
||||||
/** The Wi-Fi DPP QR code from intent ACTION_PROCESS_WIFI_DPP_QR_CODE */
|
/** The Wi-Fi DPP QR code from intent ACTION_PROCESS_WIFI_DPP_QR_CODE */
|
||||||
private WifiQrCode mWifiDppQrCode;
|
private WifiQrCode mWifiDppQrCode;
|
||||||
@@ -228,12 +225,8 @@ public class WifiDppConfiguratorActivity extends InstrumentedActivity implements
|
|||||||
return mWifiNetworkConfig;
|
return mWifiNetworkConfig;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getPublicKey() {
|
public String getDppUri() {
|
||||||
return mPublicKey;
|
return mDppUri;
|
||||||
}
|
|
||||||
|
|
||||||
public String getInformation() {
|
|
||||||
return mInformation;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public WifiQrCode getWifiDppQrCode() {
|
public WifiQrCode getWifiDppQrCode() {
|
||||||
@@ -270,17 +263,15 @@ public class WifiDppConfiguratorActivity extends InstrumentedActivity implements
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onScanWifiDppSuccess(String publicKey, String information) {
|
public void onScanWifiDppSuccess(String uri) {
|
||||||
mPublicKey = publicKey;
|
mDppUri = uri;
|
||||||
mInformation = information;
|
|
||||||
|
|
||||||
showAddDeviceFragment(/* addToBackStack */ true);
|
showAddDeviceFragment(/* addToBackStack */ true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onScanZxingWifiFormatSuccess(WifiNetworkConfig wifiNetworkConfig) {
|
public void onScanZxingWifiFormatSuccess(WifiNetworkConfig wifiNetworkConfig) {
|
||||||
mPublicKey = null;
|
mDppUri = null;
|
||||||
mInformation = null;
|
|
||||||
mWifiNetworkConfig = new WifiNetworkConfig(wifiNetworkConfig);
|
mWifiNetworkConfig = new WifiNetworkConfig(wifiNetworkConfig);
|
||||||
|
|
||||||
showAddDeviceFragment(/* addToBackStack */ true);
|
showAddDeviceFragment(/* addToBackStack */ true);
|
||||||
|
@@ -16,6 +16,8 @@
|
|||||||
|
|
||||||
package com.android.settings.wifi.dpp;
|
package com.android.settings.wifi.dpp;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.net.wifi.WifiConfiguration;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.app.ActionBar;
|
import android.app.ActionBar;
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
@@ -32,6 +34,8 @@ import com.android.internal.logging.nano.MetricsProto;
|
|||||||
import com.android.settings.core.InstrumentedActivity;
|
import com.android.settings.core.InstrumentedActivity;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* To provision "this" device with specified Wi-Fi network.
|
* To provision "this" device with specified Wi-Fi network.
|
||||||
*
|
*
|
||||||
@@ -49,6 +53,39 @@ public class WifiDppEnrolleeActivity extends InstrumentedActivity implements
|
|||||||
|
|
||||||
private FragmentManager mFragmentManager;
|
private FragmentManager mFragmentManager;
|
||||||
|
|
||||||
|
private class DppStatusCallback extends android.net.wifi.DppStatusCallback {
|
||||||
|
@Override
|
||||||
|
public void onEnrolleeSuccess(int newNetworkId) {
|
||||||
|
// Connect to the new network.
|
||||||
|
final WifiManager wifiManager = getSystemService(WifiManager.class);
|
||||||
|
final List<WifiConfiguration> wifiConfigs = wifiManager.getPrivilegedConfiguredNetworks();
|
||||||
|
for (WifiConfiguration wifiConfig : wifiConfigs) {
|
||||||
|
if (wifiConfig.networkId == newNetworkId) {
|
||||||
|
wifiManager.connect(wifiConfig, WifiDppEnrolleeActivity.this);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Log.e(TAG, "Invalid networkId " + newNetworkId);
|
||||||
|
WifiDppEnrolleeActivity.this.onFailure(WifiManager.ERROR_AUTHENTICATING);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onConfiguratorSuccess(int code) {
|
||||||
|
// Do nothing
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFailure(int code) {
|
||||||
|
//TODO(b/122429170): Show DPP enrollee error state UI
|
||||||
|
Log.d(TAG, "DppStatusCallback.onFailure " + code);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onProgress(int code) {
|
||||||
|
// Do nothing
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getMetricsCategory() {
|
public int getMetricsCategory() {
|
||||||
return MetricsProto.MetricsEvent.SETTINGS_WIFI_DPP_ENROLLEE;
|
return MetricsProto.MetricsEvent.SETTINGS_WIFI_DPP_ENROLLEE;
|
||||||
@@ -108,8 +145,9 @@ public class WifiDppEnrolleeActivity extends InstrumentedActivity implements
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onScanWifiDppSuccess(String publicKey, String information) {
|
public void onScanWifiDppSuccess(String uri) {
|
||||||
// TODO(b/1023597): starts DPP enrollee handshake here
|
final WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
|
||||||
|
wifiManager.startDppAsEnrolleeInitiator(uri, /* handler */ null, new DppStatusCallback());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -62,9 +62,8 @@ public class WifiDppQrCodeScannerFragment extends WifiDppQrCodeBaseFragment impl
|
|||||||
private static final long SHOW_ERROR_MESSAGE_INTERVAL = 2000;
|
private static final long SHOW_ERROR_MESSAGE_INTERVAL = 2000;
|
||||||
private static final long SHOW_SUCCESS_SQUARE_INTERVAL = 1000;
|
private static final long SHOW_SUCCESS_SQUARE_INTERVAL = 1000;
|
||||||
|
|
||||||
// Keys for Bundle usage
|
// Key for Bundle usage
|
||||||
private static final String KEY_PUBLIC_KEY = "key_public_key";
|
private static final String KEY_PUBLIC_URI = "key_public_uri";
|
||||||
private static final String KEY_INFORMATION = "key_information";
|
|
||||||
|
|
||||||
private QrCamera mCamera;
|
private QrCamera mCamera;
|
||||||
private TextureView mTextureView;
|
private TextureView mTextureView;
|
||||||
@@ -91,7 +90,7 @@ public class WifiDppQrCodeScannerFragment extends WifiDppQrCodeBaseFragment impl
|
|||||||
|
|
||||||
// Container Activity must implement this interface
|
// Container Activity must implement this interface
|
||||||
public interface OnScanWifiDppSuccessListener {
|
public interface OnScanWifiDppSuccessListener {
|
||||||
public void onScanWifiDppSuccess(String publicKey, String information);
|
public void onScanWifiDppSuccess(String uri);
|
||||||
}
|
}
|
||||||
OnScanWifiDppSuccessListener mScanWifiDppSuccessListener;
|
OnScanWifiDppSuccessListener mScanWifiDppSuccessListener;
|
||||||
|
|
||||||
@@ -269,7 +268,7 @@ public class WifiDppQrCodeScannerFragment extends WifiDppQrCodeBaseFragment impl
|
|||||||
public void handleSuccessfulResult(String qrCode) {
|
public void handleSuccessfulResult(String qrCode) {
|
||||||
switch (mWifiQrCode.getScheme()) {
|
switch (mWifiQrCode.getScheme()) {
|
||||||
case WifiQrCode.SCHEME_DPP:
|
case WifiQrCode.SCHEME_DPP:
|
||||||
handleWifiDpp(mWifiQrCode.getPublicKey(), mWifiQrCode.getInformation());
|
handleWifiDpp(qrCode);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WifiQrCode.SCHEME_ZXING_WIFI_NETWORK_CONFIG:
|
case WifiQrCode.SCHEME_ZXING_WIFI_NETWORK_CONFIG:
|
||||||
@@ -281,13 +280,12 @@ public class WifiDppQrCodeScannerFragment extends WifiDppQrCodeBaseFragment impl
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void handleWifiDpp(String publicKey, String information) {
|
private void handleWifiDpp(String uri) {
|
||||||
destroyCamera();
|
destroyCamera();
|
||||||
mDecorateView.setFocused(true);
|
mDecorateView.setFocused(true);
|
||||||
|
|
||||||
final Bundle bundle = new Bundle();
|
final Bundle bundle = new Bundle();
|
||||||
bundle.putString(KEY_PUBLIC_KEY, publicKey);
|
bundle.putString(KEY_PUBLIC_URI, uri);
|
||||||
bundle.putString(KEY_INFORMATION, information);
|
|
||||||
|
|
||||||
Message message = mHandler.obtainMessage(MESSAGE_SCAN_WIFI_DPP_SUCCESS);
|
Message message = mHandler.obtainMessage(MESSAGE_SCAN_WIFI_DPP_SUCCESS);
|
||||||
message.setData(bundle);
|
message.setData(bundle);
|
||||||
@@ -352,10 +350,9 @@ public class WifiDppQrCodeScannerFragment extends WifiDppQrCodeBaseFragment impl
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
final Bundle bundle = msg.getData();
|
final Bundle bundle = msg.getData();
|
||||||
final String publicKey = bundle.getString(KEY_PUBLIC_KEY);
|
final String uri = bundle.getString(KEY_PUBLIC_URI);
|
||||||
final String information = bundle.getString(KEY_INFORMATION);
|
|
||||||
|
|
||||||
mScanWifiDppSuccessListener.onScanWifiDppSuccess(publicKey, information);
|
mScanWifiDppSuccessListener.onScanWifiDppSuccess(uri);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MESSAGE_SCAN_ZXING_WIFI_FORMAT_SUCCESS:
|
case MESSAGE_SCAN_ZXING_WIFI_FORMAT_SUCCESS:
|
||||||
|
@@ -64,6 +64,9 @@ public class WifiDppUtils {
|
|||||||
/** The data corresponding to {@code WifiConfiguration} hiddenSSID */
|
/** The data corresponding to {@code WifiConfiguration} hiddenSSID */
|
||||||
public static final String EXTRA_WIFI_HIDDEN_SSID = "hiddenSsid";
|
public static final String EXTRA_WIFI_HIDDEN_SSID = "hiddenSsid";
|
||||||
|
|
||||||
|
/** The data corresponding to {@code WifiConfiguration} networkId */
|
||||||
|
public static final String EXTRA_WIFI_NETWORK_ID = "networkId";
|
||||||
|
|
||||||
/** @see WifiQrCode */
|
/** @see WifiQrCode */
|
||||||
public static final String EXTRA_QR_CODE = "qrCode";
|
public static final String EXTRA_QR_CODE = "qrCode";
|
||||||
|
|
||||||
@@ -164,6 +167,11 @@ public class WifiDppUtils {
|
|||||||
if (!TextUtils.isEmpty(preSharedKey)) {
|
if (!TextUtils.isEmpty(preSharedKey)) {
|
||||||
intent.putExtra(EXTRA_WIFI_PRE_SHARED_KEY, preSharedKey);
|
intent.putExtra(EXTRA_WIFI_PRE_SHARED_KEY, preSharedKey);
|
||||||
}
|
}
|
||||||
|
if (wifiConfig.networkId == WifiConfiguration.INVALID_NETWORK_ID) {
|
||||||
|
throw new IllegalArgumentException("Invalid network ID");
|
||||||
|
} else {
|
||||||
|
intent.putExtra(EXTRA_WIFI_NETWORK_ID, wifiConfig.networkId);
|
||||||
|
}
|
||||||
|
|
||||||
return intent;
|
return intent;
|
||||||
}
|
}
|
||||||
|
@@ -46,13 +46,15 @@ public class WifiNetworkConfig {
|
|||||||
private String mSsid;
|
private String mSsid;
|
||||||
private String mPreSharedKey;
|
private String mPreSharedKey;
|
||||||
private boolean mHiddenSsid;
|
private boolean mHiddenSsid;
|
||||||
|
private int mNetworkId;
|
||||||
|
|
||||||
private WifiNetworkConfig(String security, String ssid, String preSharedKey,
|
private WifiNetworkConfig(String security, String ssid, String preSharedKey, boolean hiddenSsid,
|
||||||
boolean hiddenSsid) {
|
int networkId) {
|
||||||
mSecurity = security;
|
mSecurity = security;
|
||||||
mSsid = ssid;
|
mSsid = ssid;
|
||||||
mPreSharedKey = preSharedKey;
|
mPreSharedKey = preSharedKey;
|
||||||
mHiddenSsid = hiddenSsid;
|
mHiddenSsid = hiddenSsid;
|
||||||
|
mNetworkId = networkId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public WifiNetworkConfig(WifiNetworkConfig config) {
|
public WifiNetworkConfig(WifiNetworkConfig config) {
|
||||||
@@ -60,6 +62,7 @@ public class WifiNetworkConfig {
|
|||||||
mSsid = config.mSsid;
|
mSsid = config.mSsid;
|
||||||
mPreSharedKey = config.mPreSharedKey;
|
mPreSharedKey = config.mPreSharedKey;
|
||||||
mHiddenSsid = config.mHiddenSsid;
|
mHiddenSsid = config.mHiddenSsid;
|
||||||
|
mNetworkId = config.mNetworkId;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -82,17 +85,19 @@ public class WifiNetworkConfig {
|
|||||||
String ssid = intent.getStringExtra(WifiDppUtils.EXTRA_WIFI_SSID);
|
String ssid = intent.getStringExtra(WifiDppUtils.EXTRA_WIFI_SSID);
|
||||||
String preSharedKey = intent.getStringExtra(WifiDppUtils.EXTRA_WIFI_PRE_SHARED_KEY);
|
String preSharedKey = intent.getStringExtra(WifiDppUtils.EXTRA_WIFI_PRE_SHARED_KEY);
|
||||||
boolean hiddenSsid = intent.getBooleanExtra(WifiDppUtils.EXTRA_WIFI_HIDDEN_SSID, false);
|
boolean hiddenSsid = intent.getBooleanExtra(WifiDppUtils.EXTRA_WIFI_HIDDEN_SSID, false);
|
||||||
|
int networkId = intent.getIntExtra(WifiDppUtils.EXTRA_WIFI_NETWORK_ID,
|
||||||
|
WifiConfiguration.INVALID_NETWORK_ID);
|
||||||
|
|
||||||
return getValidConfigOrNull(security, ssid, preSharedKey, hiddenSsid);
|
return getValidConfigOrNull(security, ssid, preSharedKey, hiddenSsid, networkId);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static WifiNetworkConfig getValidConfigOrNull(String security, String ssid,
|
public static WifiNetworkConfig getValidConfigOrNull(String security, String ssid,
|
||||||
String preSharedKey, boolean hiddenSsid) {
|
String preSharedKey, boolean hiddenSsid, int networkId) {
|
||||||
if (!isValidConfig(security, ssid, preSharedKey, hiddenSsid)) {
|
if (!isValidConfig(security, ssid, preSharedKey, hiddenSsid)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return new WifiNetworkConfig(security, ssid, preSharedKey, hiddenSsid);
|
return new WifiNetworkConfig(security, ssid, preSharedKey, hiddenSsid, networkId);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isValidConfig(WifiNetworkConfig config) {
|
public static boolean isValidConfig(WifiNetworkConfig config) {
|
||||||
@@ -184,6 +189,11 @@ public class WifiNetworkConfig {
|
|||||||
return mHiddenSsid;
|
return mHiddenSsid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Keep
|
||||||
|
public int getNetworkId() {
|
||||||
|
return mNetworkId;
|
||||||
|
}
|
||||||
|
|
||||||
public void connect(Context context, WifiManager.ActionListener listener) {
|
public void connect(Context context, WifiManager.ActionListener listener) {
|
||||||
WifiConfiguration wifiConfiguration = getWifiConfigurationOrNull();
|
WifiConfiguration wifiConfiguration = getWifiConfigurationOrNull();
|
||||||
if (wifiConfiguration == null) {
|
if (wifiConfiguration == null) {
|
||||||
@@ -208,6 +218,7 @@ public class WifiNetworkConfig {
|
|||||||
final WifiConfiguration wifiConfiguration = new WifiConfiguration();
|
final WifiConfiguration wifiConfiguration = new WifiConfiguration();
|
||||||
wifiConfiguration.SSID = addQuotationIfNeeded(mSsid);
|
wifiConfiguration.SSID = addQuotationIfNeeded(mSsid);
|
||||||
wifiConfiguration.hiddenSSID = mHiddenSsid;
|
wifiConfiguration.hiddenSSID = mHiddenSsid;
|
||||||
|
wifiConfiguration.networkId = mNetworkId;
|
||||||
|
|
||||||
if (TextUtils.isEmpty(mSecurity) || SECURITY_NO_PASSWORD.equals(mSecurity)) {
|
if (TextUtils.isEmpty(mSecurity) || SECURITY_NO_PASSWORD.equals(mSecurity)) {
|
||||||
wifiConfiguration.allowedKeyManagement.set(KeyMgmt.NONE);
|
wifiConfiguration.allowedKeyManagement.set(KeyMgmt.NONE);
|
||||||
|
@@ -17,6 +17,7 @@
|
|||||||
package com.android.settings.wifi.dpp;
|
package com.android.settings.wifi.dpp;
|
||||||
|
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.net.wifi.WifiConfiguration;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
|
|
||||||
import androidx.annotation.Keep;
|
import androidx.annotation.Keep;
|
||||||
@@ -135,7 +136,7 @@ public class WifiQrCode {
|
|||||||
password = removeBackSlash(password);
|
password = removeBackSlash(password);
|
||||||
|
|
||||||
mWifiNetworkConfig = WifiNetworkConfig.getValidConfigOrNull(security, ssid, password,
|
mWifiNetworkConfig = WifiNetworkConfig.getValidConfigOrNull(security, ssid, password,
|
||||||
hiddenSsid);
|
hiddenSsid, WifiConfiguration.INVALID_NETWORK_ID);
|
||||||
|
|
||||||
if (mWifiNetworkConfig == null) {
|
if (mWifiNetworkConfig == null) {
|
||||||
throw new IllegalArgumentException("Invalid format");
|
throw new IllegalArgumentException("Invalid format");
|
||||||
|
Reference in New Issue
Block a user