diff options
| -rw-r--r-- | api/system-current.txt | 2 | ||||
| -rw-r--r-- | wifi/java/android/net/wifi/IWifiManager.aidl | 2 | ||||
| -rw-r--r-- | wifi/java/android/net/wifi/WifiConfiguration.java | 12 | ||||
| -rw-r--r-- | wifi/java/android/net/wifi/WifiManager.java | 23 | ||||
| -rw-r--r-- | wifi/java/com/android/server/wifi/BaseWifiService.java | 5 | ||||
| -rw-r--r-- | wifi/tests/src/android/net/wifi/WifiManagerTest.java | 10 |
6 files changed, 54 insertions, 0 deletions
diff --git a/api/system-current.txt b/api/system-current.txt index 9573478f10e9..9dcacafd6569 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -4737,6 +4737,7 @@ package android.net.wifi { method @Deprecated public boolean hasNoInternetAccess(); method @Deprecated public boolean isEphemeral(); method @Deprecated public boolean isNoInternetAccessExpected(); + field @Deprecated public boolean allowAutojoin; field @Deprecated public String creatorName; field @Deprecated public int creatorUid; field @Deprecated public String lastUpdateName; @@ -4759,6 +4760,7 @@ package android.net.wifi { public class WifiManager { method @RequiresPermission("android.permission.WIFI_UPDATE_USABILITY_STATS_SCORE") public void addOnWifiUsabilityStatsListener(@NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.WifiManager.OnWifiUsabilityStatsListener); + method @RequiresPermission("android.permission.NETWORK_SETTINGS") public void allowAutojoin(int, boolean); method @RequiresPermission(anyOf={"android.permission.NETWORK_SETTINGS", android.Manifest.permission.NETWORK_SETUP_WIZARD, "android.permission.NETWORK_STACK"}) public void connect(@NonNull android.net.wifi.WifiConfiguration, @Nullable android.net.wifi.WifiManager.ActionListener); method @RequiresPermission(anyOf={"android.permission.NETWORK_SETTINGS", android.Manifest.permission.NETWORK_SETUP_WIZARD, "android.permission.NETWORK_STACK"}) public void connect(int, @Nullable android.net.wifi.WifiManager.ActionListener); method @Deprecated @RequiresPermission(anyOf={"android.permission.NETWORK_SETTINGS", android.Manifest.permission.NETWORK_SETUP_WIZARD, "android.permission.NETWORK_STACK"}) public void disable(int, @Nullable android.net.wifi.WifiManager.ActionListener); diff --git a/wifi/java/android/net/wifi/IWifiManager.aidl b/wifi/java/android/net/wifi/IWifiManager.aidl index 13377390fc04..19be13268d27 100644 --- a/wifi/java/android/net/wifi/IWifiManager.aidl +++ b/wifi/java/android/net/wifi/IWifiManager.aidl @@ -94,6 +94,8 @@ interface IWifiManager boolean disableNetwork(int netId, String packageName); + void allowAutojoin(int netId, boolean choice); + boolean startScan(String packageName); List<ScanResult> getScanResults(String callingPackage); diff --git a/wifi/java/android/net/wifi/WifiConfiguration.java b/wifi/java/android/net/wifi/WifiConfiguration.java index 2afb14a12110..3bedddc8ec7d 100644 --- a/wifi/java/android/net/wifi/WifiConfiguration.java +++ b/wifi/java/android/net/wifi/WifiConfiguration.java @@ -735,6 +735,14 @@ public class WifiConfiguration implements Parcelable { */ public int userApproved = USER_UNSPECIFIED; + /** + * @hide + * Auto-join is allowed by user for this network. + * Default true. + */ + @SystemApi + public boolean allowAutojoin = true; + /** The Below RSSI thresholds are used to configure AutoJoin * - GOOD/LOW/BAD thresholds are used so as to calculate link score * - UNWANTED_SOFT are used by the blacklisting logic so as to handle @@ -2022,6 +2030,7 @@ public class WifiConfiguration implements Parcelable { if (updateIdentifier != null) sbuf.append(" updateIdentifier=" + updateIdentifier); sbuf.append(" lcuid=" + lastConnectUid); sbuf.append(" userApproved=" + userApprovedAsString(userApproved)); + sbuf.append(" allowAutojoin=" + allowAutojoin); sbuf.append(" noInternetAccessExpected=" + noInternetAccessExpected); sbuf.append(" "); @@ -2421,6 +2430,7 @@ public class WifiConfiguration implements Parcelable { numScorerOverrideAndSwitchedNetwork = source.numScorerOverrideAndSwitchedNetwork; numAssociation = source.numAssociation; userApproved = source.userApproved; + allowAutojoin = source.allowAutojoin; numNoInternetAccessReports = source.numNoInternetAccessReports; noInternetAccessExpected = source.noInternetAccessExpected; creationTime = source.creationTime; @@ -2496,6 +2506,7 @@ public class WifiConfiguration implements Parcelable { dest.writeInt(numScorerOverrideAndSwitchedNetwork); dest.writeInt(numAssociation); dest.writeInt(userApproved); + dest.writeBoolean(allowAutojoin); dest.writeInt(numNoInternetAccessReports); dest.writeInt(noInternetAccessExpected ? 1 : 0); dest.writeInt(shared ? 1 : 0); @@ -2571,6 +2582,7 @@ public class WifiConfiguration implements Parcelable { config.numScorerOverrideAndSwitchedNetwork = in.readInt(); config.numAssociation = in.readInt(); config.userApproved = in.readInt(); + config.allowAutojoin = in.readBoolean(); config.numNoInternetAccessReports = in.readInt(); config.noInternetAccessExpected = in.readInt() != 0; config.shared = in.readInt() != 0; diff --git a/wifi/java/android/net/wifi/WifiManager.java b/wifi/java/android/net/wifi/WifiManager.java index 11c21318e594..f626b0c46fa9 100644 --- a/wifi/java/android/net/wifi/WifiManager.java +++ b/wifi/java/android/net/wifi/WifiManager.java @@ -3869,6 +3869,29 @@ public class WifiManager { } /** + * Sets the user choice for allowing auto-join to a network. + * The updated choice will be made available through the updated config supplied by the + * CONFIGURED_NETWORKS_CHANGED broadcast. + * + * @param netId the id of the network to allow/disallow autojoin for. + * @param choice true to allow autojoin, false to disallow autojoin + * @hide + */ + @SystemApi + @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) + public void allowAutojoin(int netId, boolean choice) { + try { + IWifiManager iWifiManager = getIWifiManager(); + if (iWifiManager == null) { + throw new RemoteException("Wifi service is not running"); + } + iWifiManager.allowAutojoin(netId, choice); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + + /** * Disable ephemeral Network * * @param SSID, in the format of WifiConfiguration's SSID. diff --git a/wifi/java/com/android/server/wifi/BaseWifiService.java b/wifi/java/com/android/server/wifi/BaseWifiService.java index 94fb5ae4d61c..5e6c107dc187 100644 --- a/wifi/java/com/android/server/wifi/BaseWifiService.java +++ b/wifi/java/com/android/server/wifi/BaseWifiService.java @@ -168,6 +168,11 @@ public class BaseWifiService extends IWifiManager.Stub { } @Override + public void allowAutojoin(int netId, boolean choice) { + throw new UnsupportedOperationException(); + } + + @Override public boolean startScan(String packageName) { throw new UnsupportedOperationException(); } diff --git a/wifi/tests/src/android/net/wifi/WifiManagerTest.java b/wifi/tests/src/android/net/wifi/WifiManagerTest.java index f8a0c8f5fab8..881dcbb80492 100644 --- a/wifi/tests/src/android/net/wifi/WifiManagerTest.java +++ b/wifi/tests/src/android/net/wifi/WifiManagerTest.java @@ -1489,6 +1489,16 @@ i * Verify that a call to cancel WPS immediately returns a failure. } /** + * Test behavior of {@link WifiManager#allowAutojoin(int, boolean)} + * @throws Exception + */ + @Test + public void testAllowAutojoin() throws Exception { + mWifiManager.allowAutojoin(1, true); + verify(mWifiService).allowAutojoin(eq(1), eq(true)); + } + + /** * Test behavior of {@link WifiManager#disconnect()} * @throws Exception */ |