From 48dd10fd8bd0e4940d80274512c91191b0a0a99b Mon Sep 17 00:00:00 2001 From: Oliver Scott Date: Sat, 26 Dec 2020 16:15:25 -0500 Subject: [PATCH 1/2] SetupWizard: Turn off OEM unlocking during initial setup if bootloader is locked * Some /e/ OS devices is meant to be used with a locked bootloader, and OEM unlocking set to off. * Does what Settings -> Developer Options -> OEM unlocking off does but silently, wihout having to enable Developer Options. * If you've locked the bootloader, and the device has booted into SetupWizard, it should be safe to run this since at that point you can most definitely get into Settings and run this yourself as well, and we do have the same kinds of checks here. * Additionally grant missing permissions which was missing in CalyxOS. Change-Id: I739d0808fc5c66656128f755451441de96764a90 --- AndroidManifest.xml | 1 + ...app_whitelist_org.lineageos.setupwizard.xml | 1 + .../lineageos/setupwizard/SetupWizardApp.java | 8 ++++++++ .../setupwizard/util/SetupWizardUtils.java | 18 ++++++++++++++++++ 4 files changed, 28 insertions(+) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index c6c1d812..715bdff5 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -38,6 +38,7 @@ + diff --git a/privapp_whitelist_org.lineageos.setupwizard.xml b/privapp_whitelist_org.lineageos.setupwizard.xml index 3b1e5b6d..955d1c47 100644 --- a/privapp_whitelist_org.lineageos.setupwizard.xml +++ b/privapp_whitelist_org.lineageos.setupwizard.xml @@ -22,6 +22,7 @@ + diff --git a/src/org/lineageos/setupwizard/SetupWizardApp.java b/src/org/lineageos/setupwizard/SetupWizardApp.java index acab7cf5..9789ce1e 100644 --- a/src/org/lineageos/setupwizard/SetupWizardApp.java +++ b/src/org/lineageos/setupwizard/SetupWizardApp.java @@ -1,6 +1,7 @@ /* * Copyright (C) 2013 The CyanogenMod Project * Copyright (C) 2017-2021 The LineageOS Project + * Copyright (C) 2022 The Calyx Institute * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,6 +22,7 @@ import android.app.Application; import android.app.StatusBarManager; import android.os.Bundle; import android.os.Handler; +import android.service.oemlock.OemLockManager; import android.util.Log; import org.lineageos.setupwizard.util.NetworkMonitor; @@ -101,6 +103,12 @@ public class SetupWizardApp extends Application { SetupWizardUtils.setMobileDataEnabled(this, false); sStatusBarManager = SetupWizardUtils.disableStatusBar(this); mHandler.postDelayed(mRadioTimeoutRunnable, SetupWizardApp.RADIO_READY_TIMEOUT); + // If the bootloader is locked, and OEM unlocking is allowed, turn it off + if (SetupWizardUtils.isOwner() + && !SetupWizardUtils.isBootloaderUnlocked(this) + && SetupWizardUtils.isOemunlockAllowed(this)) { + getSystemService(OemLockManager.class).setOemUnlockAllowedByUser(false); + } } public static StatusBarManager getStatusBarManager() { diff --git a/src/org/lineageos/setupwizard/util/SetupWizardUtils.java b/src/org/lineageos/setupwizard/util/SetupWizardUtils.java index d29c9169..8b522d57 100644 --- a/src/org/lineageos/setupwizard/util/SetupWizardUtils.java +++ b/src/org/lineageos/setupwizard/util/SetupWizardUtils.java @@ -1,6 +1,7 @@ /* * Copyright (C) 2013 The CyanogenMod Project * Copyright (C) 2017-2021 The LineageOS Project + * Copyright (C) 2022 The Calyx Institute * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -47,6 +48,7 @@ import android.os.Binder; import android.os.SystemProperties; import android.os.UserHandle; import android.provider.Settings; +import android.service.oemlock.OemLockManager; import android.telephony.ServiceState; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; @@ -289,6 +291,22 @@ public class SetupWizardUtils { return PhoneMonitor.getInstance().isMultiSimDevice(); } + public static boolean isBootloaderUnlocked(Context context) { + OemLockManager oemLockManager = context.getSystemService(OemLockManager.class); + if (oemLockManager != null) { + return oemLockManager.isDeviceOemUnlocked(); + } + return true; // Default to unlocked + } + + public static boolean isOemunlockAllowed(Context context) { + OemLockManager oemLockManager = context.getSystemService(OemLockManager.class); + if (oemLockManager != null) { + return oemLockManager.isOemUnlockAllowed(); + } + return true; // Default to unlock allowed + } + public static void disableComponentsForMissingFeatures(Context context) { if (!hasLeanback(context)) { disableComponent(context, BluetoothSetupActivity.class); -- GitLab From 6dfe6945d3e5d1abc2c9e8fe0850d8445c0d6afb Mon Sep 17 00:00:00 2001 From: althafvly Date: Wed, 10 May 2023 16:45:29 +0530 Subject: [PATCH 2/2] Revert "SetupWizard: Add ability to skip the setup wizard" This reverts commit a22db3482dd83a63a941c4be63342d6f3eddd055. --- .../setupwizard/WelcomeActivity.java | 30 ------------------- 1 file changed, 30 deletions(-) diff --git a/src/org/lineageos/setupwizard/WelcomeActivity.java b/src/org/lineageos/setupwizard/WelcomeActivity.java index 665f47be..d550acaf 100644 --- a/src/org/lineageos/setupwizard/WelcomeActivity.java +++ b/src/org/lineageos/setupwizard/WelcomeActivity.java @@ -18,15 +18,12 @@ package org.lineageos.setupwizard; import android.os.Bundle; -import android.os.Handler; -import android.view.KeyEvent; import android.view.MotionEvent; import android.view.View; import com.google.android.setupcompat.util.SystemBarHelper; import org.lineageos.setupwizard.util.EnableAccessibilityController; -import org.lineageos.setupwizard.util.SetupWizardUtils; public class WelcomeActivity extends BaseSetupWizardActivity { @@ -35,9 +32,6 @@ public class WelcomeActivity extends BaseSetupWizardActivity { private View mRootView; private EnableAccessibilityController mEnableAccessibilityController; - private int mVolumeUpCount = 0; - private Handler mHandler = new Handler(); - @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -61,30 +55,6 @@ public class WelcomeActivity extends BaseSetupWizardActivity { public void onBackPressed() { } - @Override - public boolean onKeyDown(int keyCode, KeyEvent event) { - if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) { - mVolumeUpCount++; - if (mVolumeUpCount == 1) { - // Schedule a runnable to reset the count after 1 second - mHandler.postDelayed(new Runnable() { - @Override - public void run() { - mVolumeUpCount = 0; - } - }, 1000); // 1 second delay - } - } else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN && mVolumeUpCount == 2) { - // If the volume down key is pressed and the volume up count is 2 - // Finish the setup wizard and enable the status bar - SetupWizardUtils.finishSetupWizard(getApplicationContext()); - SetupWizardUtils.enableStatusBar(getApplicationContext()); - finish(); - } - - return super.onKeyDown(keyCode, event); - } - @Override protected int getLayoutResId() { return R.layout.welcome_activity; -- GitLab