summaryrefslogtreecommitdiffstats
path: root/wifi/java
diff options
context:
space:
mode:
authorLorenzo Colitti <lorenzo@google.com>2015-04-22 10:44:49 +0900
committerLorenzo Colitti <lorenzo@google.com>2015-04-22 12:01:35 +0900
commitfa57c489f621cd10add639cf7df59f630a7f41a4 (patch)
tree484087f6d93ba69be703eaa7a69699553e7f8c5c /wifi/java
parent8b625dbe7fa13e3fd15f57f015ab7afe229ce3cf (diff)
downloadframeworks_base-fa57c489f621cd10add639cf7df59f630a7f41a4.zip
frameworks_base-fa57c489f621cd10add639cf7df59f630a7f41a4.tar.gz
frameworks_base-fa57c489f621cd10add639cf7df59f630a7f41a4.tar.bz2
Allow apps with ACCESS_WIFI_STATE to listen for wifi networks
The compatibility measure introduced in bug 20081183 for apps that connect to a Wi-Fi network without Internet access and then expect to be able to use that network requires that such apps register a NetworkCallback so that their WifiManager can pin them to whatever wifi Network connects. Currently, registering the callback requires ACCESS_NETWORK_STATE and the app may not have that permission. Allow registering wifi (only) callbacks if the app has ACCESS_WIFI_STATE. If the app does not have ACCESS_WIFI_STATE (unlikely, since CHANGE_WIFI_STATE is not very useful without ACCESS_WIFI_STATE), then don't enable the compatibility measure. Bug: 20081183 Bug: 20423580 Change-Id: Iad328d30c2d170dead883868fece3d922da68f6f
Diffstat (limited to 'wifi/java')
-rw-r--r--wifi/java/android/net/wifi/WifiManager.java12
1 files changed, 10 insertions, 2 deletions
diff --git a/wifi/java/android/net/wifi/WifiManager.java b/wifi/java/android/net/wifi/WifiManager.java
index 0f7dd61..3205351 100644
--- a/wifi/java/android/net/wifi/WifiManager.java
+++ b/wifi/java/android/net/wifi/WifiManager.java
@@ -2063,7 +2063,11 @@ public class WifiManager {
.removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.build();
mNetworkCallback = new PinningNetworkCallback();
- sCM.registerNetworkCallback(request, mNetworkCallback);
+ try {
+ sCM.registerNetworkCallback(request, mNetworkCallback);
+ } catch (SecurityException e) {
+ Log.d(TAG, "Failed to register network callback", e);
+ }
}
}
}
@@ -2072,7 +2076,11 @@ public class WifiManager {
initConnectivityManager();
synchronized (sCM) {
if (mNetworkCallback != null) {
- sCM.unregisterNetworkCallback(mNetworkCallback);
+ try {
+ sCM.unregisterNetworkCallback(mNetworkCallback);
+ } catch (SecurityException e) {
+ Log.d(TAG, "Failed to unregister network callback", e);
+ }
mNetworkCallback = null;
}
}