diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 3d4413a9ebd6777dc96bdfcd12c416b5c4231396..f183a94f079202298275a4f2cf5e79dc3e2d0324 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 3b1e5b6dc78e6e3c5ac3c7218fb9204f4a71d5b6..955d1c47fa0e73dfa013ccd0c4b941e79dbfbb89 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 a1d7f938c4271c8769e7487f89cfd906e6661777..dc5914ffd36aabfeae2f552d5db635c316282b7d 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/WelcomeActivity.java b/src/org/lineageos/setupwizard/WelcomeActivity.java index fbb23a29e8eb2c7878715c033e3cd95e01716a65..b169660f084d26366d8479177591cc387551b642 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; diff --git a/src/org/lineageos/setupwizard/util/SetupWizardUtils.java b/src/org/lineageos/setupwizard/util/SetupWizardUtils.java index 483698447d30ea590d045dcd961d4a46aca4b202..581d39a278514ee8a1ce98fc0bdacb549c68c05e 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);