Filter out unsupported security type for DPP configuration.

There is different Wi-Fi security support between ZXing's Wi-Fi QR code
format and Wi-Fi DPP QR code format.

  ZXing's Wi-Fi QR code format: supports WEP / WPA / none security
  Wi-Fi DPP: supports WPA / SAE

So we will have different UI behavior for different security.

  WEP & none security: only support QR code generator
  WPA: supports both QR code generator & scanner
  SAE: only supports QR code scanner
  others: don't support. The share button is invisible

Bug: 123212410
Test: manual test
Change-Id: I87962d730282fc2c1b96223dca6feb79235fe5a1
This commit is contained in:
Arc Wang
2019-01-22 18:12:55 +08:00
parent 875178bbfa
commit cfa78006a0
6 changed files with 105 additions and 20 deletions

View File

@@ -84,9 +84,18 @@ public class WifiDppQrCodeGeneratorFragment extends WifiDppQrCodeBaseFragment {
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
MenuItem item = menu.add(0, Menu.FIRST, 0, R.string.next_label);
item.setIcon(R.drawable.ic_scan_24dp);
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
final WifiNetworkConfig wifiNetworkConfig = getWifiNetworkConfigFromHostActivity();
MenuItem menuItem;
if (wifiNetworkConfig.isSupportConfiguratorQrCodeScanner(getActivity())) {
menuItem = menu.add(0, Menu.FIRST, 0, R.string.next_label);
menuItem.setIcon(R.drawable.ic_scan_24dp);
menuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
} else {
menuItem = menu.findItem(Menu.FIRST);
if (menuItem != null) {
menuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
}
}
super.onCreateOptionsMenu(menu, inflater);
}
@@ -116,11 +125,7 @@ public class WifiDppQrCodeGeneratorFragment extends WifiDppQrCodeBaseFragment {
mQrCodeView = view.findViewById(R.id.qrcode_view);
mHeaderIcon.setImageResource(R.drawable.ic_qrcode_24dp);
WifiNetworkConfig wifiNetworkConfig = ((WifiNetworkConfig.Retriever) getActivity())
.getWifiNetworkConfig();
if (!WifiNetworkConfig.isValidConfig(wifiNetworkConfig)) {
throw new IllegalStateException("Invalid Wi-Fi network for configuring");
}
final WifiNetworkConfig wifiNetworkConfig = getWifiNetworkConfigFromHostActivity();
mTitle.setText(R.string.wifi_dpp_share_wifi);
mSummary.setText(getString(R.string.wifi_dpp_scan_qr_code_with_another_device,
wifiNetworkConfig.getSsid()));
@@ -139,4 +144,14 @@ public class WifiDppQrCodeGeneratorFragment extends WifiDppQrCodeBaseFragment {
Log.e(TAG, "Error generatting QR code bitmap " + e);
}
}
WifiNetworkConfig getWifiNetworkConfigFromHostActivity() {
final WifiNetworkConfig wifiNetworkConfig = ((WifiNetworkConfig.Retriever) getActivity())
.getWifiNetworkConfig();
if (!WifiNetworkConfig.isValidConfig(wifiNetworkConfig)) {
throw new IllegalStateException("Invalid Wi-Fi network for configuring");
}
return wifiNetworkConfig;
}
}