2 * Copyright (C) 2015 The Android Open Source Project
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package com.android.settings.wifi;
18 import static android.content.Context.WIFI_SERVICE;
20 import android.content.Context;
21 import android.content.Intent;
22 import android.net.ConnectivityManager;
23 import android.net.NetworkInfo;
24 import android.net.NetworkScoreManager;
25 import android.net.wifi.WifiManager;
26 import android.provider.SearchIndexableResource;
28 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
29 import com.android.settings.R;
30 import com.android.settings.dashboard.DashboardFragment;
31 import com.android.settings.network.NetworkScorerPickerPreferenceController;
32 import com.android.settings.search.BaseSearchIndexProvider;
33 import com.android.settings.search.Indexable;
34 import com.android.settings.wifi.p2p.WifiP2pPreferenceController;
35 import com.android.settings.wrapper.NetworkScoreManagerWrapper;
36 import com.android.settingslib.core.AbstractPreferenceController;
38 import java.util.ArrayList;
39 import java.util.Arrays;
40 import java.util.List;
42 public class ConfigureWifiSettings extends DashboardFragment {
44 private static final String TAG = "ConfigureWifiSettings";
46 public static final String KEY_IP_ADDRESS = "current_ip_address";
48 private WifiWakeupPreferenceController mWifiWakeupPreferenceController;
49 private UseOpenWifiPreferenceController mUseOpenWifiPreferenceController;
52 public int getMetricsCategory() {
53 return MetricsEvent.CONFIGURE_WIFI;
57 protected String getLogTag() {
62 public int getInitialExpandedChildCount() {
64 if (mUseOpenWifiPreferenceController.isAvailable()) {
71 protected int getPreferenceScreenResId() {
72 return R.xml.wifi_configure_settings;
76 protected List<AbstractPreferenceController> getPreferenceControllers(Context context) {
77 final NetworkScoreManagerWrapper networkScoreManagerWrapper =
78 new NetworkScoreManagerWrapper(context.getSystemService(NetworkScoreManager.class));
79 mWifiWakeupPreferenceController = new WifiWakeupPreferenceController(context);
80 mUseOpenWifiPreferenceController = new UseOpenWifiPreferenceController(context, this,
81 networkScoreManagerWrapper, getLifecycle());
82 final WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
83 final List<AbstractPreferenceController> controllers = new ArrayList<>();
84 controllers.add(mWifiWakeupPreferenceController);
85 controllers.add(new NetworkScorerPickerPreferenceController(context,
86 networkScoreManagerWrapper));
87 controllers.add(new NotifyOpenNetworksPreferenceController(context, getLifecycle()));
88 controllers.add(mUseOpenWifiPreferenceController);
89 controllers.add(new WifiInfoPreferenceController(context, getLifecycle(), wifiManager));
90 controllers.add(new CellularFallbackPreferenceController(context));
91 controllers.add(new WifiP2pPreferenceController(context, getLifecycle(), wifiManager));
96 public void onActivityResult(int requestCode, int resultCode, Intent data) {
97 if (mUseOpenWifiPreferenceController == null ||
98 !mUseOpenWifiPreferenceController.onActivityResult(requestCode, resultCode)) {
99 super.onActivityResult(requestCode, resultCode, data);
103 public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
104 new BaseSearchIndexProvider() {
106 public List<SearchIndexableResource> getXmlResourcesToIndex(Context context,
108 final SearchIndexableResource sir = new SearchIndexableResource(context);
109 sir.xmlResId = R.xml.wifi_configure_settings;
110 return Arrays.asList(sir);
114 public List<String> getNonIndexableKeys(Context context) {
115 List<String> keys = super.getNonIndexableKeys(context);
117 // If connected to WiFi, this IP address will be the same as the Status IP.
118 // Or, if there is no connection they will say unavailable.
119 ConnectivityManager cm = (ConnectivityManager)
120 context.getSystemService(Context.CONNECTIVITY_SERVICE);
121 NetworkInfo info = cm.getActiveNetworkInfo();
123 || info.getType() == ConnectivityManager.TYPE_WIFI) {
124 keys.add(KEY_IP_ADDRESS);
130 protected boolean isPageSearchEnabled(Context context) {
131 return context.getResources()
132 .getBoolean(R.bool.config_show_wifi_settings);