From 1b2f57a0d3b0bc03ca228c46e3f7f59e2d3aa061 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 9a3f3d7b..8b5016bf 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -37,6 +37,7 @@ + diff --git a/privapp_whitelist_org.lineageos.setupwizard.xml b/privapp_whitelist_org.lineageos.setupwizard.xml index 98e0a0f4..b17cd818 100644 --- a/privapp_whitelist_org.lineageos.setupwizard.xml +++ b/privapp_whitelist_org.lineageos.setupwizard.xml @@ -23,6 +23,7 @@ + diff --git a/src/org/lineageos/setupwizard/SetupWizardApp.java b/src/org/lineageos/setupwizard/SetupWizardApp.java index 3bfaa2d2..c40c8a53 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 @@ package org.lineageos.setupwizard; import android.app.Application; import android.os.Bundle; import android.os.Handler; +import android.service.oemlock.OemLockManager; import android.util.Log; import org.lineageos.setupwizard.util.NetworkMonitor; @@ -97,6 +99,12 @@ public class SetupWizardApp extends Application { SetupWizardUtils.disableComponentsForMissingFeatures(this); SetupWizardUtils.setMobileDataEnabled(this, false); 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 boolean isRadioReady() { diff --git a/src/org/lineageos/setupwizard/util/SetupWizardUtils.java b/src/org/lineageos/setupwizard/util/SetupWizardUtils.java index e9a59783..e16124f4 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 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. @@ -49,6 +50,7 @@ import android.os.SystemProperties; import android.os.UserHandle; import android.net.ConnectivityManager; import android.provider.Settings; +import android.service.oemlock.OemLockManager; import android.telephony.ServiceState; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; @@ -258,6 +260,22 @@ public class SetupWizardUtils { return PhoneMonitor.getInstance().simMissing(); } + 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 6a0ef849e8b33dce7b0068ed869aab4f8ea15855 Mon Sep 17 00:00:00 2001 From: althafvly Date: Wed, 10 May 2023 16:44:54 +0530 Subject: [PATCH 2/2] Revert "SetupWizard: Add ability to skip the setup wizard" This reverts commit a0a8f0e9024a92beb847106d6ec467eaf70ce889. --- .../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 eb60f275..63dcc54e 100644 --- a/src/org/lineageos/setupwizard/WelcomeActivity.java +++ b/src/org/lineageos/setupwizard/WelcomeActivity.java @@ -18,13 +18,10 @@ 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 org.lineageos.setupwizard.util.EnableAccessibilityController; -import org.lineageos.setupwizard.util.SetupWizardUtils; public class WelcomeActivity extends BaseSetupWizardActivity { @@ -33,9 +30,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); @@ -58,30 +52,6 @@ public class WelcomeActivity extends BaseSetupWizardActivity { startEmergencyDialer(); } - @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