Turn off airplane mode when DISALLOW_AIRPLANE_MODE is set.
Test: run cts --module DevicePolicyManager --test com.android.cts.devicepolicy.DeviceOwnerTest#testAirplaneModeRestriction
Bug: 67675441
Change-Id: I94b6c985fe76cc9601ac6a481beca17966102109
diff --git a/services/core/java/com/android/server/pm/UserRestrictionsUtils.java b/services/core/java/com/android/server/pm/UserRestrictionsUtils.java
index 8dd7105..cc07d82 100644
--- a/services/core/java/com/android/server/pm/UserRestrictionsUtils.java
+++ b/services/core/java/com/android/server/pm/UserRestrictionsUtils.java
@@ -25,12 +25,14 @@
import android.app.ActivityManager;
import android.content.ContentResolver;
import android.content.Context;
+import android.content.Intent;
import android.os.Binder;
import android.os.Bundle;
import android.os.RemoteException;
import android.os.UserHandle;
import android.os.UserManager;
import android.os.UserManagerInternal;
+import android.provider.Settings;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.util.Log;
@@ -543,6 +545,22 @@
android.provider.Settings.Global.SAFE_BOOT_DISALLOWED,
newValue ? 1 : 0);
break;
+ case UserManager.DISALLOW_AIRPLANE_MODE:
+ if (newValue) {
+ final boolean airplaneMode = Settings.Global.getInt(
+ context.getContentResolver(),
+ Settings.Global.AIRPLANE_MODE_ON, 0) == 1;
+ if (airplaneMode) {
+ android.provider.Settings.Global.putInt(
+ context.getContentResolver(),
+ android.provider.Settings.Global.AIRPLANE_MODE_ON, 0);
+ // Post the intent.
+ Intent intent = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED);
+ intent.putExtra("state", 0);
+ context.sendBroadcastAsUser(intent, UserHandle.ALL);
+ }
+ }
+ break;
}
} finally {
Binder.restoreCallingIdentity(id);