From 85eca488e562275de3f5395fb5ad58d3bd8218bd Mon Sep 17 00:00:00 2001 From: Lorenzo Colitti Date: Tue, 9 Oct 2018 18:50:32 +0900 Subject: Make setAirplaneMode @SystemApi for SetupWizard. Expose ConnectivityManager#setAirplaneMode and the NETWORK_SETUP_WIZARD permission so that SetupWizard can call setAirplaneMode. Delete setAirplaneMode from the greylist because the permissions checks on it, since at least 2013, have been for a privileged permission (CONNECTIVITY_INTERNAL) that normal apps don't have. Test: m Bug: 115302596 Change-Id: I28f24d32c4b4b386407e9e0e3514ea9f8854f4a8 --- api/system-current.txt | 2 ++ config/hiddenapi-light-greylist.txt | 1 - core/java/android/net/ConnectivityManager.java | 2 +- core/res/AndroidManifest.xml | 1 + 4 files changed, 4 insertions(+), 2 deletions(-) diff --git a/api/system-current.txt b/api/system-current.txt index 89ac7210de46..c8dcc82180e9 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -120,6 +120,7 @@ package android { field public static final java.lang.String MOUNT_FORMAT_FILESYSTEMS = "android.permission.MOUNT_FORMAT_FILESYSTEMS"; field public static final java.lang.String MOUNT_UNMOUNT_FILESYSTEMS = "android.permission.MOUNT_UNMOUNT_FILESYSTEMS"; field public static final java.lang.String MOVE_PACKAGE = "android.permission.MOVE_PACKAGE"; + field public static final java.lang.String NETWORK_SETUP_WIZARD = "android.permission.NETWORK_SETUP_WIZARD"; field public static final java.lang.String NOTIFICATION_DURING_SETUP = "android.permission.NOTIFICATION_DURING_SETUP"; field public static final java.lang.String NOTIFY_TV_INPUTS = "android.permission.NOTIFY_TV_INPUTS"; field public static final java.lang.String OBSERVE_APP_USAGE = "android.permission.OBSERVE_APP_USAGE"; @@ -3074,6 +3075,7 @@ package android.net { public class ConnectivityManager { method public java.lang.String getCaptivePortalServerUrl(); method public boolean isTetheringSupported(); + method public void setAirplaneMode(boolean); method public void startTethering(int, boolean, android.net.ConnectivityManager.OnStartTetheringCallback); method public void startTethering(int, boolean, android.net.ConnectivityManager.OnStartTetheringCallback, android.os.Handler); method public void stopTethering(int); diff --git a/config/hiddenapi-light-greylist.txt b/config/hiddenapi-light-greylist.txt index fbf5b5288928..7339311311c3 100644 --- a/config/hiddenapi-light-greylist.txt +++ b/config/hiddenapi-light-greylist.txt @@ -573,7 +573,6 @@ Landroid/net/IConnectivityManager;->getTetherableWifiRegexs()[Ljava/lang/String; Landroid/net/IConnectivityManager;->getTetheredIfaces()[Ljava/lang/String; Landroid/net/IConnectivityManager;->getTetheringErroredIfaces()[Ljava/lang/String; Landroid/net/IConnectivityManager;->reportInetCondition(II)V -Landroid/net/IConnectivityManager;->setAirplaneMode(Z)V Landroid/net/IConnectivityManager;->startLegacyVpn(Lcom/android/internal/net/VpnProfile;)V Landroid/net/INetworkManagementEventObserver$Stub;->()V Landroid/net/INetworkPolicyListener$Stub;->()V diff --git a/core/java/android/net/ConnectivityManager.java b/core/java/android/net/ConnectivityManager.java index 8333b817add0..ee386127bd4d 100644 --- a/core/java/android/net/ConnectivityManager.java +++ b/core/java/android/net/ConnectivityManager.java @@ -2728,7 +2728,7 @@ public class ConnectivityManager { * @hide */ @RequiresPermission(android.Manifest.permission.CONNECTIVITY_INTERNAL) - @UnsupportedAppUsage + @SystemApi public void setAirplaneMode(boolean enable) { try { mService.setAirplaneMode(enable); diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml index 73bb1fc1b4a7..22194cc2ebbd 100644 --- a/core/res/AndroidManifest.xml +++ b/core/res/AndroidManifest.xml @@ -1441,6 +1441,7 @@