Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions core/java/android/provider/Settings.java
Original file line number Diff line number Diff line change
Expand Up @@ -4498,6 +4498,7 @@ public static final class System extends NameValueTable {
MOVED_TO_GLOBAL.add(Settings.Global.RADIO_BLUETOOTH);
MOVED_TO_GLOBAL.add(Settings.Global.RADIO_WIMAX);
MOVED_TO_GLOBAL.add(Settings.Global.SHOW_PROCESSES);
MOVED_TO_GLOBAL.add(Settings.Global.AIRPLANE_MODE_ON_BOOT);
}

/** @hide */
Expand Down Expand Up @@ -20600,6 +20601,12 @@ public static boolean putFloat(ContentResolver cr, String name, float value) {
public static final String WATCH_RANGING_AVAILABLE =
"watch_ranging_available";

/**
* Whether Airplane mode should be toggled on during boot
* @hide
*/
public static final String AIRPLANE_MODE_ON_BOOT = "airplane_mode_on_boot";

/**
* Settings migrated from Wear OS settings provider.
* @hide
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -485,5 +485,6 @@ public class GlobalSettingsValidators {
new InclusiveIntegerRangeValidator(0, 1));
VALIDATORS.put(Global.MINMODE_ACTIVE, BOOLEAN_VALIDATOR);
VALIDATORS.put(Global.WATCH_RANGING_AVAILABLE, BOOLEAN_VALIDATOR);
VALIDATORS.put(Global.AIRPLANE_MODE_ON_BOOT, BOOLEAN_VALIDATOR);
}
}
13 changes: 10 additions & 3 deletions services/java/com/android/server/SystemServer.java
Original file line number Diff line number Diff line change
Expand Up @@ -1861,6 +1861,10 @@ private void startOtherServices(@NonNull TimingsTraceAndSlog t) {
// Before things start rolling, be sure we have decided whether
// we are in safe mode.
final boolean safeMode = wm.detectSafeMode();
boolean airplaneModeOnBoot = Settings.Global.getInt(
mContentResolver,
Settings.Global.AIRPLANE_MODE_ON_BOOT,
0) != 0;
if (safeMode) {
// If yes, immediately turn on the global setting for airplane mode.
// Note that this does not send broadcasts at this stage because
Expand All @@ -1871,6 +1875,9 @@ private void startOtherServices(@NonNull TimingsTraceAndSlog t) {
} else if (context.getResources().getBoolean(R.bool.config_autoResetAirplaneMode)) {
Settings.Global.putInt(context.getContentResolver(),
Settings.Global.AIRPLANE_MODE_ON, 0);
}if (airplaneModeOnBoot) {
Settings.Global.putInt(context.getContentResolver(),
Settings.Global.AIRPLANE_MODE_ON, 1);
}

StatusBarManagerService statusBar = null;
Expand Down Expand Up @@ -3422,12 +3429,12 @@ private void startOtherServices(@NonNull TimingsTraceAndSlog t) {
// TODO: This may actually be too late if radio firmware already started leaking
// RF before the respective services start. However, fixing this requires changes
// to radio firmware and interfaces.
if (safeMode) {
t.traceBegin("EnableAirplaneModeInSafeMode");
if (safeMode || airplaneModeOnBoot) {
t.traceBegin("EnableAirplaneModeInSafeMode: " + safeMode + " EnableAirplaneModeOnBoot: " + airplaneModeOnBoot);
try {
connectivityF.setAirplaneMode(true);
} catch (Throwable e) {
reportWtf("enabling Airplane Mode during Safe Mode bootup", e);
reportWtf("enabling Airplane Mode during Safe Mode bootup: " + safeMode + " EnableAirplaneModeOnBoot: " + airplaneModeOnBoot, e);
}
t.traceEnd();
}
Expand Down