Add a "sign into network" button to the wifi details page.

Bug: 36203355
Test: manually signed into captive portal
Test: make -j64 RunSettingsRoboTests
Change-Id: I3242ef30125ddfdaaac9b80ead4f8ac14ea6d364
This commit is contained in:
Lorenzo Colitti
2017-04-27 00:56:39 +09:00
parent d51b94b042
commit b6245156f6
6 changed files with 255 additions and 43 deletions

View File

@@ -17,8 +17,12 @@ package com.android.settings.wifi.details;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.ConnectivityManager.NetworkCallback;
import android.net.NetworkRequest;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.widget.Button;
import com.android.internal.logging.nano.MetricsProto;
@@ -26,6 +30,7 @@ import com.android.settings.R;
import com.android.settings.applications.LayoutPreference;
import com.android.settings.core.PreferenceController;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.vpn2.ConnectivityManagerWrapperImpl;
import com.android.settingslib.wifi.AccessPoint;
import java.util.ArrayList;
@@ -40,9 +45,6 @@ import java.util.List;
public class WifiNetworkDetailsFragment extends DashboardFragment {
private static final String TAG = "WifiNetworkDetailsFrg";
// XML KEYS
private static final String KEY_FORGET_BUTTON = "forget_button";
private AccessPoint mAccessPoint;
private Button mForgetButton;
private WifiDetailPreferenceController mWifiDetailPreferenceController;
@@ -59,9 +61,11 @@ public class WifiNetworkDetailsFragment extends DashboardFragment {
// Header Title set automatically from launching Preference
LayoutPreference forgetPreference = ((LayoutPreference) findPreference(KEY_FORGET_BUTTON));
forgetPreference.setVisible(mWifiDetailPreferenceController.canForgetNetwork());
mForgetButton = (Button) forgetPreference.findViewById(R.id.button);
LayoutPreference buttonsPreference = ((LayoutPreference) findPreference(
WifiDetailPreferenceController.KEY_BUTTONS_PREF));
buttonsPreference.setVisible(mWifiDetailPreferenceController.canForgetNetwork());
mForgetButton = (Button) buttonsPreference.findViewById(R.id.left_button);
mForgetButton.setText(R.string.forget);
mForgetButton.setOnClickListener(view -> forgetNetwork());
}
@@ -88,11 +92,13 @@ public class WifiNetworkDetailsFragment extends DashboardFragment {
@Override
protected List<PreferenceController> getPreferenceControllers(Context context) {
ConnectivityManager cm = context.getSystemService(ConnectivityManager.class);
mWifiDetailPreferenceController = new WifiDetailPreferenceController(
mAccessPoint,
context.getSystemService(ConnectivityManager.class),
new ConnectivityManagerWrapperImpl(cm),
context,
this,
new Handler(Looper.getMainLooper()), // UI thread.
getLifecycle(),
context.getSystemService(WifiManager.class));