Merge "Change permissions checks for setAirplaneMode."
This commit is contained in:
@@ -2731,7 +2731,10 @@ public class ConnectivityManager {
|
|||||||
*
|
*
|
||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
@RequiresPermission(android.Manifest.permission.CONNECTIVITY_INTERNAL)
|
@RequiresPermission(anyOf = {
|
||||||
|
android.Manifest.permission.NETWORK_SETTINGS,
|
||||||
|
android.Manifest.permission.NETWORK_SETUP_WIZARD,
|
||||||
|
android.Manifest.permission.NETWORK_STACK})
|
||||||
@SystemApi
|
@SystemApi
|
||||||
public void setAirplaneMode(boolean enable) {
|
public void setAirplaneMode(boolean enable) {
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -1679,6 +1679,16 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
"ConnectivityService");
|
"ConnectivityService");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void enforceAnyPermissionOf(String... permissions) {
|
||||||
|
for (String permission : permissions) {
|
||||||
|
if (mContext.checkCallingOrSelfPermission(permission) == PERMISSION_GRANTED) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
throw new SecurityException(
|
||||||
|
"Requires one of the following permissions: " + String.join(", ", permissions) + ".");
|
||||||
|
}
|
||||||
|
|
||||||
private void enforceInternetPermission() {
|
private void enforceInternetPermission() {
|
||||||
mContext.enforceCallingOrSelfPermission(
|
mContext.enforceCallingOrSelfPermission(
|
||||||
android.Manifest.permission.INTERNET,
|
android.Manifest.permission.INTERNET,
|
||||||
@@ -1723,6 +1733,13 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
"ConnectivityService");
|
"ConnectivityService");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void enforceNetworkStackSettingsOrSetup() {
|
||||||
|
enforceAnyPermissionOf(
|
||||||
|
android.Manifest.permission.NETWORK_SETTINGS,
|
||||||
|
android.Manifest.permission.NETWORK_SETUP_WIZARD,
|
||||||
|
android.Manifest.permission.NETWORK_STACK);
|
||||||
|
}
|
||||||
|
|
||||||
private boolean checkNetworkStackPermission() {
|
private boolean checkNetworkStackPermission() {
|
||||||
return PERMISSION_GRANTED == mContext.checkCallingOrSelfPermission(
|
return PERMISSION_GRANTED == mContext.checkCallingOrSelfPermission(
|
||||||
android.Manifest.permission.NETWORK_STACK);
|
android.Manifest.permission.NETWORK_STACK);
|
||||||
@@ -3984,7 +4001,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setAirplaneMode(boolean enable) {
|
public void setAirplaneMode(boolean enable) {
|
||||||
enforceConnectivityInternalPermission();
|
enforceNetworkStackSettingsOrSetup();
|
||||||
final long ident = Binder.clearCallingIdentity();
|
final long ident = Binder.clearCallingIdentity();
|
||||||
try {
|
try {
|
||||||
final ContentResolver cr = mContext.getContentResolver();
|
final ContentResolver cr = mContext.getContentResolver();
|
||||||
|
|||||||
Reference in New Issue
Block a user