From d472369791495022dcafe1230567f8a6642d3323 Mon Sep 17 00:00:00 2001 From: Edward Savage-Jones Date: Tue, 26 Nov 2019 13:18:08 +0100 Subject: [PATCH] Add NETWORK_AIRPLANE_MODE permission Add a permission to allow airplane mode to be toggled without holding the NETWORK_SETTINGS (or similar) permission. Bug: 141621384 Bug: 145164696 Test: TODO Change-Id: Iebe2f501fdd802d54fd3345ac2fb0a8c129faf71 --- core/java/android/net/ConnectivityManager.java | 1 + .../java/com/android/server/ConnectivityService.java | 11 ++++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/core/java/android/net/ConnectivityManager.java b/core/java/android/net/ConnectivityManager.java index 194068cd74..a5bc408ed6 100644 --- a/core/java/android/net/ConnectivityManager.java +++ b/core/java/android/net/ConnectivityManager.java @@ -3155,6 +3155,7 @@ public class ConnectivityManager { * @hide */ @RequiresPermission(anyOf = { + android.Manifest.permission.NETWORK_AIRPLANE_MODE, android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD, android.Manifest.permission.NETWORK_STACK}) diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java index bb7406a567..50246f5c1c 100644 --- a/services/core/java/com/android/server/ConnectivityService.java +++ b/services/core/java/com/android/server/ConnectivityService.java @@ -2060,6 +2060,15 @@ public class ConnectivityService extends IConnectivityManager.Stub NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK); } + private void enforceAirplaneModePermission() { + enforceAnyPermissionOf( + android.Manifest.permission.NETWORK_AIRPLANE_MODE, + android.Manifest.permission.NETWORK_SETTINGS, + android.Manifest.permission.NETWORK_SETUP_WIZARD, + android.Manifest.permission.NETWORK_STACK, + NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK); + } + private boolean checkNetworkStackPermission() { return checkAnyPermissionOf( android.Manifest.permission.NETWORK_STACK, @@ -4900,7 +4909,7 @@ public class ConnectivityService extends IConnectivityManager.Stub @Override public void setAirplaneMode(boolean enable) { - enforceNetworkStackSettingsOrSetup(); + enforceAirplaneModePermission(); final long ident = Binder.clearCallingIdentity(); try { final ContentResolver cr = mContext.getContentResolver();