Home | History | Annotate | Download | only in wifi
      1 /*
      2  * Copyright (C) 2017 The Android Open Source Project
      3  *
      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
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     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
     15  */
     16 package com.android.settingslib.wifi;
     17 
     18 import android.content.Context;
     19 import android.net.wifi.WifiConfiguration;
     20 import android.net.wifi.WifiManager;
     21 import android.net.wifi.hotspot2.PasspointConfiguration;
     22 
     23 import java.util.ArrayList;
     24 import java.util.List;
     25 
     26 /**
     27  * Provide utility functions for retrieving saved Wi-Fi configurations.
     28  */
     29 public class WifiSavedConfigUtils {
     30     /**
     31      * Returns all the saved configurations on the device, including both Wi-Fi networks and
     32      * Passpoint profiles, represented by {@link AccessPoint}.
     33      *
     34      * @param context The application context
     35      * @param wifiManager An instance of {@link WifiManager}
     36      * @return List of {@link AccessPoint}
     37      */
     38     public static List<AccessPoint> getAllConfigs(Context context, WifiManager wifiManager) {
     39         List<AccessPoint> savedConfigs = new ArrayList<>();
     40         List<WifiConfiguration> savedNetworks = wifiManager.getConfiguredNetworks();
     41         for (WifiConfiguration network : savedNetworks) {
     42             // Configuration for Passpoint network is configured temporary by WifiService for
     43             // connection attempt only.  The underlying configuration is saved as Passpoint
     44             // configuration, which will be retrieved with WifiManager#getPasspointConfiguration
     45             // call below.
     46             if (network.isPasspoint()) {
     47                 continue;
     48             }
     49             // Ephemeral networks are not saved to the persistent storage, ignore them.
     50             if (network.isEphemeral()) {
     51                 continue;
     52             }
     53             savedConfigs.add(new AccessPoint(context, network));
     54         }
     55         try {
     56             List<PasspointConfiguration> savedPasspointConfigs =
     57                     wifiManager.getPasspointConfigurations();
     58             for (PasspointConfiguration config : savedPasspointConfigs) {
     59                 savedConfigs.add(new AccessPoint(context, config));
     60             }
     61         } catch (UnsupportedOperationException e) {
     62             // Passpoint not supported.
     63         }
     64         return savedConfigs;
     65     }
     66 }
     67 
     68