From b3213e4164e02659c51a1889ad57bc977e4b8bd7 Mon Sep 17 00:00:00 2001 From: Abel Tesfaye Date: Tue, 15 Jun 2021 00:06:07 +0000 Subject: [PATCH] Fix missing share context option in settings app Bug: 191075974 Test: locally with flame Change-Id: Idbdea3e9b32fc8fd24e4676cfe3189232f97bdcd --- .../network/NetworkProviderSettings.java | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/network/NetworkProviderSettings.java b/src/com/android/settings/network/NetworkProviderSettings.java index 22b9bccc52f..26f7dba124c 100644 --- a/src/com/android/settings/network/NetworkProviderSettings.java +++ b/src/com/android/settings/network/NetworkProviderSettings.java @@ -116,6 +116,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment static final int MENU_ID_FORGET = Menu.FIRST + 3; static final int MENU_ID_MODIFY = Menu.FIRST + 4; static final int MENU_FIX_CONNECTIVITY = Menu.FIRST + 5; + static final int MENU_ID_SHARE = Menu.FIRST + 6; @VisibleForTesting static final int ADD_NETWORK_REQUEST = 2; @@ -522,7 +523,8 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment } if (mSelectedWifiEntry.canDisconnect()) { - menu.add(Menu.NONE, MENU_ID_DISCONNECT, 0 /* order */, + menu.add(Menu.NONE, MENU_ID_SHARE, 0 /* order */, R.string.share); + menu.add(Menu.NONE, MENU_ID_DISCONNECT, 1 /* order */, R.string.wifi_disconnect_button_text); } @@ -561,6 +563,10 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment case MENU_ID_FORGET: forget(mSelectedWifiEntry); return true; + case MENU_ID_SHARE: + WifiDppUtils.showLockScreen(getContext(), + () -> launchWifiDppConfiguratorActivity(mSelectedWifiEntry)); + return true; case MENU_ID_MODIFY: showDialog(mSelectedWifiEntry, WifiConfigUiBase2.MODE_MODIFY); return true; @@ -595,6 +601,23 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment return true; } + private void launchWifiDppConfiguratorActivity(WifiEntry wifiEntry) { + final Intent intent = WifiDppUtils.getConfiguratorQrCodeGeneratorIntentOrNull(getContext(), + mWifiManager, wifiEntry); + + if (intent == null) { + Log.e(TAG, "Launch Wi-Fi DPP QR code generator with a wrong Wi-Fi network!"); + } else { + mMetricsFeatureProvider.action(SettingsEnums.PAGE_UNKNOWN, + SettingsEnums.ACTION_SETTINGS_SHARE_WIFI_QR_CODE, + SettingsEnums.SETTINGS_WIFI_DPP_CONFIGURATOR, + /* key */ null, + /* value */ Integer.MIN_VALUE); + + startActivity(intent); + } + } + private void showDialog(WifiEntry wifiEntry, int dialogMode) { if (WifiUtils.isNetworkLockedDown(getActivity(), wifiEntry.getWifiConfiguration()) && wifiEntry.getConnectedState() == WifiEntry.CONNECTED_STATE_CONNECTED) {