From 1888b5d2ba38ad60ada2c00c03469d05c7cc4ef8 Mon Sep 17 00:00:00 2001 From: "David T.H. Kao" Date: Tue, 13 Jun 2017 14:18:27 -0700 Subject: Add method to clear configured networks (#55) * Add method to clear configured networks * throw after trying to clear all with list of failed ssids * weird spacing * config not ssid * remove a log * missing diamond * address the NPE that can happen when wifi is disabled and document issues with permissions * fix log --- .../mobly/snippet/bundled/WifiManagerSnippet.java | 24 ++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) (limited to 'src/main/java/com/google/android/mobly') diff --git a/src/main/java/com/google/android/mobly/snippet/bundled/WifiManagerSnippet.java b/src/main/java/com/google/android/mobly/snippet/bundled/WifiManagerSnippet.java index 5c25bc6..1911b9f 100644 --- a/src/main/java/com/google/android/mobly/snippet/bundled/WifiManagerSnippet.java +++ b/src/main/java/com/google/android/mobly/snippet/bundled/WifiManagerSnippet.java @@ -34,6 +34,7 @@ import com.google.android.mobly.snippet.rpc.Rpc; import com.google.android.mobly.snippet.rpc.RpcMinSdk; import com.google.android.mobly.snippet.util.Log; import java.util.ArrayList; +import java.util.List; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; @@ -58,6 +59,25 @@ public class WifiManagerSnippet implements Snippet { mWifiManager = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE); } + @Rpc(description = "Clears all configured networks. This will only work if all configured " + + "networks were added through this MBS instance") + public void wifiClearConfiguredNetworks() throws WifiManagerSnippetException { + List unremovedConfigs = mWifiManager.getConfiguredNetworks(); + List failedConfigs = new ArrayList<>(); + if (unremovedConfigs == null) { + throw new WifiManagerSnippetException( + "Failed to get a list of configured networks. Is wifi disabled?"); + } + for (WifiConfiguration config : unremovedConfigs) { + if (!mWifiManager.removeNetwork(config.networkId)) { + failedConfigs.add(config); + } + } + if (!failedConfigs.isEmpty()) { + throw new WifiManagerSnippetException("Failed to remove networks: " + failedConfigs); + } + } + @Rpc(description = "Turns on Wi-Fi with a 30s timeout.") public void wifiEnable() throws InterruptedException, WifiManagerSnippetException { if (!mWifiManager.setWifiEnabled(true)) { @@ -216,8 +236,8 @@ public class WifiManagerSnippet implements Snippet { "Get the list of configured Wi-Fi networks, each is a serialized " + "WifiConfiguration object." ) - public ArrayList wifiGetConfiguredNetworks() throws JSONException { - ArrayList networks = new ArrayList<>(); + public List wifiGetConfiguredNetworks() throws JSONException { + List networks = new ArrayList<>(); for (WifiConfiguration config : mWifiManager.getConfiguredNetworks()) { networks.add(mJsonSerializer.toJson(config)); } -- cgit v1.2.3