[Passpointv2] Implement Wi-Fi detail page for saved network
Will show a Wi-Fi status detail page when clicking a saved network. Bug: 124695272 Test: Manual Change-Id: I5f32cf63f369593ad49c93ceeaace9fb623888e5
This commit is contained in:
@@ -173,7 +173,7 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
|
|||||||
// fall through
|
// fall through
|
||||||
case WifiManager.NETWORK_STATE_CHANGED_ACTION:
|
case WifiManager.NETWORK_STATE_CHANGED_ACTION:
|
||||||
case WifiManager.RSSI_CHANGED_ACTION:
|
case WifiManager.RSSI_CHANGED_ACTION:
|
||||||
updateInfo();
|
updateLiveNetworkInfo();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -336,7 +336,7 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
|
|||||||
mNetwork = mWifiManager.getCurrentNetwork();
|
mNetwork = mWifiManager.getCurrentNetwork();
|
||||||
mLinkProperties = mConnectivityManager.getLinkProperties(mNetwork);
|
mLinkProperties = mConnectivityManager.getLinkProperties(mNetwork);
|
||||||
mNetworkCapabilities = mConnectivityManager.getNetworkCapabilities(mNetwork);
|
mNetworkCapabilities = mConnectivityManager.getNetworkCapabilities(mNetwork);
|
||||||
updateInfo();
|
updateLiveNetworkInfo();
|
||||||
mContext.registerReceiver(mReceiver, mFilter);
|
mContext.registerReceiver(mReceiver, mFilter);
|
||||||
mConnectivityManager.registerNetworkCallback(mNetworkRequest, mNetworkCallback,
|
mConnectivityManager.registerNetworkCallback(mNetworkRequest, mNetworkCallback,
|
||||||
mHandler);
|
mHandler);
|
||||||
@@ -353,7 +353,30 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
|
|||||||
mConnectivityManager.unregisterNetworkCallback(mNetworkCallback);
|
mConnectivityManager.unregisterNetworkCallback(mNetworkCallback);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateInfo() {
|
// TODO(b/124707751): Refactoring the code later, keeping it currently for stability.
|
||||||
|
protected void updateSavedNetworkInfo() {
|
||||||
|
mSignalStrengthPref.setVisible(false);
|
||||||
|
mFrequencyPref.setVisible(false);
|
||||||
|
mTxLinkSpeedPref.setVisible(false);
|
||||||
|
mRxLinkSpeedPref.setVisible(false);
|
||||||
|
|
||||||
|
// MAC Address Pref
|
||||||
|
mMacAddressPref.setSummary(mWifiConfig.getRandomizedMacAddress().toString());
|
||||||
|
|
||||||
|
// TODO(b/124700353): Change header to data usage chart
|
||||||
|
mEntityHeaderController.setSummary(mAccessPoint.getSettingsSummary())
|
||||||
|
.done(mFragment.getActivity(), true /* rebind */);
|
||||||
|
|
||||||
|
updateIpLayerInfo();
|
||||||
|
|
||||||
|
// Update whether the forget button should be displayed.
|
||||||
|
mButtonsPref.setButton1Visible(canForgetNetwork());
|
||||||
|
|
||||||
|
// TODO(b/124700405): Check if showing share button is fine to added for saved network
|
||||||
|
mButtonsPref.setButton3Visible(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateLiveNetworkInfo() {
|
||||||
// No need to fetch LinkProperties and NetworkCapabilities, they are updated by the
|
// No need to fetch LinkProperties and NetworkCapabilities, they are updated by the
|
||||||
// callbacks. mNetwork doesn't change except in onResume.
|
// callbacks. mNetwork doesn't change except in onResume.
|
||||||
mNetworkInfo = mConnectivityManager.getNetworkInfo(mNetwork);
|
mNetworkInfo = mConnectivityManager.getNetworkInfo(mNetwork);
|
||||||
|
@@ -0,0 +1,66 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2019 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.android.settings.wifi.details;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.net.ConnectivityManager;
|
||||||
|
import android.net.wifi.WifiManager;
|
||||||
|
import android.os.Handler;
|
||||||
|
|
||||||
|
import androidx.fragment.app.Fragment;
|
||||||
|
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
|
import com.android.settingslib.core.lifecycle.Lifecycle;
|
||||||
|
import com.android.settingslib.wifi.AccessPoint;
|
||||||
|
|
||||||
|
public class WifiDetailSavedNetworkPreferenceController extends WifiDetailPreferenceController {
|
||||||
|
|
||||||
|
WifiDetailSavedNetworkPreferenceController(AccessPoint accessPoint,
|
||||||
|
ConnectivityManager connectivityManager, Context context,
|
||||||
|
Fragment fragment, Handler handler,
|
||||||
|
Lifecycle lifecycle,
|
||||||
|
WifiManager wifiManager,
|
||||||
|
MetricsFeatureProvider metricsFeatureProvider,
|
||||||
|
IconInjector injector) {
|
||||||
|
super(accessPoint, connectivityManager, context, fragment, handler, lifecycle, wifiManager,
|
||||||
|
metricsFeatureProvider, injector);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static WifiDetailSavedNetworkPreferenceController newInstance(
|
||||||
|
AccessPoint accessPoint,
|
||||||
|
ConnectivityManager connectivityManager,
|
||||||
|
Context context,
|
||||||
|
Fragment fragment,
|
||||||
|
Handler handler,
|
||||||
|
Lifecycle lifecycle,
|
||||||
|
WifiManager wifiManager,
|
||||||
|
MetricsFeatureProvider metricsFeatureProvider) {
|
||||||
|
return new WifiDetailSavedNetworkPreferenceController(
|
||||||
|
accessPoint, connectivityManager, context, fragment, handler, lifecycle,
|
||||||
|
wifiManager, metricsFeatureProvider, new IconInjector(context));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onPause() {
|
||||||
|
// Do nothing
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onResume() {
|
||||||
|
updateSavedNetworkInfo();
|
||||||
|
}
|
||||||
|
}
|
@@ -51,6 +51,9 @@ public class WifiNetworkDetailsFragment extends DashboardFragment {
|
|||||||
|
|
||||||
private static final String TAG = "WifiNetworkDetailsFrg";
|
private static final String TAG = "WifiNetworkDetailsFrg";
|
||||||
|
|
||||||
|
// Extra for if current fragment shows saved network status or not.
|
||||||
|
public static final String EXTRA_IS_SAVED_NETWORK = "SavedNetwork";
|
||||||
|
|
||||||
private AccessPoint mAccessPoint;
|
private AccessPoint mAccessPoint;
|
||||||
private WifiDetailPreferenceController mWifiDetailPreferenceController;
|
private WifiDetailPreferenceController mWifiDetailPreferenceController;
|
||||||
|
|
||||||
@@ -122,6 +125,21 @@ public class WifiNetworkDetailsFragment extends DashboardFragment {
|
|||||||
protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
|
protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
|
||||||
final List<AbstractPreferenceController> controllers = new ArrayList<>();
|
final List<AbstractPreferenceController> controllers = new ArrayList<>();
|
||||||
final ConnectivityManager cm = context.getSystemService(ConnectivityManager.class);
|
final ConnectivityManager cm = context.getSystemService(ConnectivityManager.class);
|
||||||
|
|
||||||
|
final boolean isDisplaySavedNetworkDetails =
|
||||||
|
getArguments().getBoolean(EXTRA_IS_SAVED_NETWORK, false /* defaultValue */);
|
||||||
|
if (isDisplaySavedNetworkDetails) {
|
||||||
|
mWifiDetailPreferenceController =
|
||||||
|
WifiDetailSavedNetworkPreferenceController.newInstance(
|
||||||
|
mAccessPoint,
|
||||||
|
cm,
|
||||||
|
context,
|
||||||
|
this,
|
||||||
|
new Handler(Looper.getMainLooper()), // UI thread.
|
||||||
|
getSettingsLifecycle(),
|
||||||
|
context.getSystemService(WifiManager.class),
|
||||||
|
mMetricsFeatureProvider);
|
||||||
|
} else {
|
||||||
mWifiDetailPreferenceController = WifiDetailPreferenceController.newInstance(
|
mWifiDetailPreferenceController = WifiDetailPreferenceController.newInstance(
|
||||||
mAccessPoint,
|
mAccessPoint,
|
||||||
cm,
|
cm,
|
||||||
@@ -131,6 +149,7 @@ public class WifiNetworkDetailsFragment extends DashboardFragment {
|
|||||||
getSettingsLifecycle(),
|
getSettingsLifecycle(),
|
||||||
context.getSystemService(WifiManager.class),
|
context.getSystemService(WifiManager.class),
|
||||||
mMetricsFeatureProvider);
|
mMetricsFeatureProvider);
|
||||||
|
}
|
||||||
|
|
||||||
controllers.add(mWifiDetailPreferenceController);
|
controllers.add(mWifiDetailPreferenceController);
|
||||||
controllers.add(new WifiMeteredPreferenceController(context, mAccessPoint.getConfig()));
|
controllers.add(new WifiMeteredPreferenceController(context, mAccessPoint.getConfig()));
|
||||||
|
@@ -23,13 +23,18 @@ import android.content.Context;
|
|||||||
import android.content.DialogInterface;
|
import android.content.DialogInterface;
|
||||||
import android.net.wifi.WifiManager;
|
import android.net.wifi.WifiManager;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.util.FeatureFlagUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
|
import com.android.settings.core.FeatureFlags;
|
||||||
|
import com.android.settings.core.SubSettingLauncher;
|
||||||
import com.android.settings.dashboard.DashboardFragment;
|
import com.android.settings.dashboard.DashboardFragment;
|
||||||
|
import com.android.settings.development.featureflags.FeatureFlagPersistent;
|
||||||
import com.android.settings.wifi.WifiConfigUiBase;
|
import com.android.settings.wifi.WifiConfigUiBase;
|
||||||
import com.android.settings.wifi.WifiDialog;
|
import com.android.settings.wifi.WifiDialog;
|
||||||
import com.android.settings.wifi.WifiSettings;
|
import com.android.settings.wifi.WifiSettings;
|
||||||
|
import com.android.settings.wifi.details.WifiNetworkDetailsFragment;
|
||||||
import com.android.settingslib.wifi.AccessPoint;
|
import com.android.settingslib.wifi.AccessPoint;
|
||||||
import com.android.settingslib.wifi.AccessPointPreference;
|
import com.android.settingslib.wifi.AccessPointPreference;
|
||||||
|
|
||||||
@@ -95,8 +100,24 @@ public class SavedAccessPointsWifiSettings extends DashboardFragment
|
|||||||
mAccessPointSavedState = null;
|
mAccessPointSavedState = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (usingDetailsFragment(getContext())) {
|
||||||
|
if (mSelectedAccessPoint == null) {
|
||||||
|
mSelectedAccessPoint = new AccessPoint(getActivity(), mAccessPointSavedState);
|
||||||
|
}
|
||||||
|
final Bundle savedState = new Bundle();
|
||||||
|
mSelectedAccessPoint.saveWifiState(savedState);
|
||||||
|
savedState.putBoolean(WifiNetworkDetailsFragment.EXTRA_IS_SAVED_NETWORK, true);
|
||||||
|
|
||||||
|
new SubSettingLauncher(getContext())
|
||||||
|
.setTitleText(mSelectedAccessPoint.getTitle())
|
||||||
|
.setDestination(WifiNetworkDetailsFragment.class.getName())
|
||||||
|
.setArguments(savedState)
|
||||||
|
.setSourceMetricsCategory(getMetricsCategory())
|
||||||
|
.launch();
|
||||||
|
} else {
|
||||||
showDialog(WifiSettings.WIFI_DIALOG_ID);
|
showDialog(WifiSettings.WIFI_DIALOG_ID);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Dialog onCreateDialog(int dialogId) {
|
public Dialog onCreateDialog(int dialogId) {
|
||||||
@@ -166,4 +187,15 @@ public class SavedAccessPointsWifiSettings extends DashboardFragment
|
|||||||
public void onCancel(DialogInterface dialog) {
|
public void onCancel(DialogInterface dialog) {
|
||||||
mSelectedAccessPoint = null;
|
mSelectedAccessPoint = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if showing WifiNetworkDetailsFragment when clicking saved network item.
|
||||||
|
*/
|
||||||
|
public static boolean usingDetailsFragment(Context context) {
|
||||||
|
if (FeatureFlagUtils.isEnabled(context, FeatureFlags.MOBILE_NETWORK_V2)
|
||||||
|
&& FeatureFlagPersistent.isEnabled(context, FeatureFlags.NETWORK_INTERNET_V2)) {
|
||||||
|
return false; // TODO(b/124695272): mark true when UI is ready.
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user