Implemented nearby button that displays wifi sharing intent and long press button that opens wifi qr share fragment

Test: locally with phone
Change-Id: I73663cd3e9e86431a9264925661159fbcd16b9d3
Merged-In: I931aabaada09c87b4a7936bcde4fcff8bc237dd0
This commit is contained in:
Abel Tesfaye
2020-11-04 23:32:15 +00:00
committed by Alex Salo
parent cf231cad93
commit 2babd2d36a
5 changed files with 340 additions and 9 deletions

View File

@@ -103,6 +103,7 @@ public class WifiSettings2 extends RestrictedSettingsFragment
@VisibleForTesting
static final int MENU_ID_FORGET = Menu.FIRST + 3;
static final int MENU_ID_MODIFY = Menu.FIRST + 4;
static final int MENU_ID_SHARE = Menu.FIRST + 5;
// Max age of tracked WifiEntries
private static final long MAX_SCAN_AGE_MILLIS = 15_000;
@@ -485,7 +486,8 @@ public class WifiSettings2 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);
}
@@ -524,6 +526,10 @@ public class WifiSettings2 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;
@@ -558,6 +564,23 @@ public class WifiSettings2 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) {
@@ -698,8 +721,8 @@ public class WifiSettings2 extends RestrictedSettingsFragment
*/
private void updateWifiEntryPreferencesDelayed() {
// Safeguard from some delayed event handling
if (getActivity() != null && !mIsRestricted &&
mWifiPickerTracker.getWifiState() == WifiManager.WIFI_STATE_ENABLED) {
if (getActivity() != null && !mIsRestricted
&& mWifiPickerTracker.getWifiState() == WifiManager.WIFI_STATE_ENABLED) {
final View view = getView();
final Handler handler = view.getHandler();
if (handler != null && handler.hasCallbacks(mUpdateWifiEntryPreferencesRunnable)) {