From 4b2298bc0b7a52f475111a05872309b1644bb0c6 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 3d4413a9..f183a94f 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 a1d7f938..dc5914ff 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-2022 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; @@ -102,6 +104,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 48369844..581d39a2 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 * 2017-2022 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; @@ -282,6 +284,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) || isBluetoothDisabled()) { disableComponent(context, BluetoothSetupActivity.class); -- GitLab From 36c49ccbd8b85e3767129317534edc7a82cd771b Mon Sep 17 00:00:00 2001 From: althafvly Date: Wed, 10 May 2023 16:45:59 +0530 Subject: [PATCH 2/2] Revert "SetupWizard: Add ability to skip the setup wizard" This reverts commit a281e15d504755202a5746a2a85bcd77cb10efef. --- .../setupwizard/WelcomeActivity.java | 31 ------------------- 1 file changed, 31 deletions(-) diff --git a/src/org/lineageos/setupwizard/WelcomeActivity.java b/src/org/lineageos/setupwizard/WelcomeActivity.java index fbb23a29..b169660f 100644 --- a/src/org/lineageos/setupwizard/WelcomeActivity.java +++ b/src/org/lineageos/setupwizard/WelcomeActivity.java @@ -18,8 +18,6 @@ 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 android.widget.Button; @@ -28,17 +26,12 @@ import android.widget.TextView; import com.google.android.setupcompat.template.FooterButtonStyleUtils; import com.google.android.setupcompat.util.SystemBarHelper; -import org.lineageos.setupwizard.util.SetupWizardUtils; - public class WelcomeActivity extends BaseSetupWizardActivity { public static final String TAG = WelcomeActivity.class.getSimpleName(); private View mRootView; - private int mVolumeUpCount = 0; - private Handler mHandler = new Handler(); - @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -64,30 +57,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