From ecaeda62242db160c2b250e55f7058e2d89cb2ea Mon Sep 17 00:00:00 2001 From: Oliver Scott Date: Fri, 12 Apr 2024 21:25:25 -0400 Subject: [PATCH] Simplify exit code Change-Id: Ied4a7cb143ef979fd70da81cda6472f85e750739 --- Android.bp | 1 - AndroidManifest.xml | 4 - res/raw/lineage_wizard_script.xml | 1 + .../lineage_wizard_script_managed_profile.xml | 1 + res/raw/lineage_wizard_script_user.xml | 1 + .../setupwizard/BaseSetupWizardActivity.java | 20 +-- .../lineageos/setupwizard/FinishActivity.java | 126 +------------- .../lineageos/setupwizard/SetupWizardApp.java | 7 +- .../setupwizard/SetupWizardExitWorker.java | 32 ---- .../setupwizard/util/SetupWizardUtils.java | 160 +++++++++--------- .../wizardmanager/WizardManager.java | 6 - 11 files changed, 86 insertions(+), 273 deletions(-) delete mode 100644 src/org/lineageos/setupwizard/SetupWizardExitWorker.java diff --git a/Android.bp b/Android.bp index 51ca78b7..18f8fdd6 100644 --- a/Android.bp +++ b/Android.bp @@ -21,7 +21,6 @@ android_app { static_libs: [ "androidx.activity_activity", - "androidx.work_work-runtime-ktx", "SettingsLib", "setupcompat", "setupdesign", diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 69a15f3d..e710633e 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -324,9 +324,5 @@ - - diff --git a/res/raw/lineage_wizard_script.xml b/res/raw/lineage_wizard_script.xml index 0befc2b9..ac4f5a87 100644 --- a/res/raw/lineage_wizard_script.xml +++ b/res/raw/lineage_wizard_script.xml @@ -16,6 +16,7 @@ + diff --git a/res/raw/lineage_wizard_script_managed_profile.xml b/res/raw/lineage_wizard_script_managed_profile.xml index 6a4d1e55..36f80c62 100644 --- a/res/raw/lineage_wizard_script_managed_profile.xml +++ b/res/raw/lineage_wizard_script_managed_profile.xml @@ -11,6 +11,7 @@ + diff --git a/res/raw/lineage_wizard_script_user.xml b/res/raw/lineage_wizard_script_user.xml index aef7f2e4..f0ff14ea 100644 --- a/res/raw/lineage_wizard_script_user.xml +++ b/res/raw/lineage_wizard_script_user.xml @@ -10,6 +10,7 @@ + diff --git a/src/org/lineageos/setupwizard/BaseSetupWizardActivity.java b/src/org/lineageos/setupwizard/BaseSetupWizardActivity.java index b0e52d55..5a64abb4 100644 --- a/src/org/lineageos/setupwizard/BaseSetupWizardActivity.java +++ b/src/org/lineageos/setupwizard/BaseSetupWizardActivity.java @@ -10,15 +10,11 @@ import static android.view.View.INVISIBLE; import static com.google.android.setupcompat.util.ResultCodes.RESULT_SKIP; -import static org.lineageos.setupwizard.SetupWizardApp.ACTION_SETUP_COMPLETE; import static org.lineageos.setupwizard.SetupWizardApp.LOGV; import android.annotation.NonNull; import android.annotation.Nullable; -import android.content.BroadcastReceiver; -import android.content.Context; import android.content.Intent; -import android.content.IntentFilter; import android.graphics.drawable.Drawable; import android.net.wifi.WifiManager; import android.os.Bundle; @@ -50,18 +46,6 @@ public abstract class BaseSetupWizardActivity extends AppCompatActivity implemen private NavigationLayout mNavigationBar; - private final BroadcastReceiver finishReceiver = new BroadcastReceiver() { - @Override - public void onReceive(Context context, Intent intent) { - if (ACTION_SETUP_COMPLETE.equals(intent.getAction())) { - if (BaseSetupWizardActivity.this instanceof FinishActivity) return; - if (mNavigationBar != null) { - // hide the activity's view, so it does not pop up again - mNavigationBar.getRootView().setVisibility(INVISIBLE); - } - } - } - }; private final ActivityResultLauncher activityResultLauncher = registerForActivityResult( new ActivityResultContracts.StartActivityForResult(), BaseSetupWizardActivity.this::onActivityResult); @@ -72,7 +56,6 @@ public abstract class BaseSetupWizardActivity extends AppCompatActivity implemen logActivityState("onCreate savedInstanceState=" + savedInstanceState); } super.onCreate(savedInstanceState); - registerReceiver(finishReceiver, new IntentFilter(ACTION_SETUP_COMPLETE)); initLayout(); mNavigationBar = getNavigationBar(); if (mNavigationBar != null) { @@ -136,7 +119,6 @@ public abstract class BaseSetupWizardActivity extends AppCompatActivity implemen if (LOGV) { logActivityState("onDestroy"); } - unregisterReceiver(finishReceiver); super.onDestroy(); } @@ -253,7 +235,7 @@ public abstract class BaseSetupWizardActivity extends AppCompatActivity implemen finish(); } - protected final void nextAction(int resultCode) { + public final void nextAction(int resultCode) { nextAction(resultCode, null); } diff --git a/src/org/lineageos/setupwizard/FinishActivity.java b/src/org/lineageos/setupwizard/FinishActivity.java index 0427a4d3..71e61bad 100644 --- a/src/org/lineageos/setupwizard/FinishActivity.java +++ b/src/org/lineageos/setupwizard/FinishActivity.java @@ -6,86 +6,42 @@ package org.lineageos.setupwizard; -import static android.os.Binder.getCallingUserHandle; -import static android.os.UserHandle.USER_CURRENT; - -import static org.lineageos.setupwizard.Manifest.permission.FINISH_SETUP; -import static org.lineageos.setupwizard.SetupWizardApp.ACTION_FINISHED; -import static org.lineageos.setupwizard.SetupWizardApp.ACTION_SETUP_COMPLETE; -import static org.lineageos.setupwizard.SetupWizardApp.DISABLE_NAV_KEYS; -import static org.lineageos.setupwizard.SetupWizardApp.ENABLE_RECOVERY_UPDATE; -import static org.lineageos.setupwizard.SetupWizardApp.KEY_SEND_METRICS; import static org.lineageos.setupwizard.SetupWizardApp.LOGV; -import static org.lineageos.setupwizard.SetupWizardApp.NAVIGATION_OPTION_KEY; -import static org.lineageos.setupwizard.SetupWizardApp.UPDATE_RECOVERY_PROP; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; -import android.app.WallpaperManager; -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; -import android.content.IntentFilter; -import android.content.om.IOverlayManager; import android.content.pm.ActivityInfo; -import android.graphics.Bitmap; -import android.graphics.Point; -import android.graphics.Rect; import android.os.Bundle; import android.os.Handler; import android.os.Looper; -import android.os.ServiceManager; -import android.os.SystemProperties; -import android.os.UserHandle; import android.util.Log; import android.view.View; import android.view.ViewAnimationUtils; import android.view.ViewGroup.MarginLayoutParams; import android.view.Window; -import android.widget.ImageView; import androidx.core.graphics.Insets; import androidx.core.view.ViewCompat; import androidx.core.view.WindowInsetsCompat; -import lineageos.providers.LineageSettings; - import org.lineageos.setupwizard.util.SetupWizardUtils; public class FinishActivity extends BaseSetupWizardActivity { public static final String TAG = FinishActivity.class.getSimpleName(); - private ImageView mBackground; - - private SetupWizardApp mSetupWizardApp; - private final Handler mHandler = new Handler(Looper.getMainLooper()); private boolean mIsFinishing; - private final BroadcastReceiver mIntentReceiver = new BroadcastReceiver() { - @Override - public void onReceive(Context context, Intent intent) { - if (LOGV) { - Log.v(TAG, "onReceive intent=" + intent); - } - if (intent != null && intent.getAction().equals(ACTION_FINISHED)) { - unregisterReceiver(mIntentReceiver); - completeSetup(); - } - } - }; - @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - overridePendingTransition(R.anim.translucent_enter, R.anim.translucent_exit); + overrideActivityTransition(OVERRIDE_TRANSITION_CLOSE, R.anim.translucent_enter, + R.anim.translucent_exit); if (LOGV) { logActivityState("onCreate savedInstanceState=" + savedInstanceState); } - mSetupWizardApp = (SetupWizardApp) getApplication(); - mBackground = findViewById(R.id.background); setNextText(R.string.start); // Edge-to-edge. Needed for the background view to fill the full screen. @@ -126,15 +82,6 @@ public class FinishActivity extends BaseSetupWizardActivity { } mIsFinishing = true; - // Listen for completion from the exit service. - IntentFilter filter = new IntentFilter(); - filter.addAction(ACTION_FINISHED); - registerReceiver(mIntentReceiver, filter, null, null); - - Intent i = new Intent(ACTION_SETUP_COMPLETE); - i.setPackage(getPackageName()); - sendBroadcastAsUser(i, getCallingUserHandle(), FINISH_SETUP); - setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED); hideNextButton(); @@ -163,77 +110,10 @@ public class FinishActivity extends BaseSetupWizardActivity { if (LOGV) { Log.v(TAG, "Animation ended"); } - // Start exit procedures, including the exit service. - SetupWizardUtils.startSetupWizardExitProcedure(FinishActivity.this); + SetupWizardUtils.finishSetupWizard(FinishActivity.this); }); } }); anim.start(); } - - private void completeSetup() { - handleEnableMetrics(mSetupWizardApp); - handleNavKeys(mSetupWizardApp); - handleRecoveryUpdate(mSetupWizardApp); - handleNavigationOption(mSetupWizardApp); - final WallpaperManager wallpaperManager = - WallpaperManager.getInstance(mSetupWizardApp); - wallpaperManager.forgetLoadedWallpaper(); - finishAffinity(); - nextAction(RESULT_OK); - SetupWizardUtils.enableStatusBar(); - Log.i(TAG, "Setup complete!"); - } - - private static void handleEnableMetrics(SetupWizardApp setupWizardApp) { - Bundle privacyData = setupWizardApp.getSettingsBundle(); - if (privacyData != null - && privacyData.containsKey(KEY_SEND_METRICS)) { - LineageSettings.Secure.putInt(setupWizardApp.getContentResolver(), - LineageSettings.Secure.STATS_COLLECTION, - privacyData.getBoolean(KEY_SEND_METRICS) - ? 1 : 0); - } - } - - private static void handleNavKeys(SetupWizardApp setupWizardApp) { - if (setupWizardApp.getSettingsBundle().containsKey(DISABLE_NAV_KEYS)) { - writeDisableNavkeysOption(setupWizardApp, - setupWizardApp.getSettingsBundle().getBoolean(DISABLE_NAV_KEYS)); - } - } - - private static void handleRecoveryUpdate(SetupWizardApp setupWizardApp) { - if (setupWizardApp.getSettingsBundle().containsKey(ENABLE_RECOVERY_UPDATE)) { - boolean update = setupWizardApp.getSettingsBundle() - .getBoolean(ENABLE_RECOVERY_UPDATE); - - SystemProperties.set(UPDATE_RECOVERY_PROP, String.valueOf(update)); - } - } - - private void handleNavigationOption(Context context) { - Bundle settingsBundle = mSetupWizardApp.getSettingsBundle(); - if (settingsBundle.containsKey(NAVIGATION_OPTION_KEY)) { - IOverlayManager overlayManager = IOverlayManager.Stub.asInterface( - ServiceManager.getService(Context.OVERLAY_SERVICE)); - String selectedNavMode = settingsBundle.getString(NAVIGATION_OPTION_KEY); - - try { - overlayManager.setEnabledExclusiveInCategory(selectedNavMode, USER_CURRENT); - } catch (Exception ignored) { - } - } - } - - private static void writeDisableNavkeysOption(Context context, boolean enabled) { - final boolean virtualKeysEnabled = LineageSettings.System.getIntForUser( - context.getContentResolver(), LineageSettings.System.FORCE_SHOW_NAVBAR, 0, - UserHandle.USER_CURRENT) != 0; - if (enabled != virtualKeysEnabled) { - LineageSettings.System.putIntForUser(context.getContentResolver(), - LineageSettings.System.FORCE_SHOW_NAVBAR, enabled ? 1 : 0, - UserHandle.USER_CURRENT); - } - } } diff --git a/src/org/lineageos/setupwizard/SetupWizardApp.java b/src/org/lineageos/setupwizard/SetupWizardApp.java index e64d6edd..34b8b1ba 100644 --- a/src/org/lineageos/setupwizard/SetupWizardApp.java +++ b/src/org/lineageos/setupwizard/SetupWizardApp.java @@ -22,9 +22,6 @@ public class SetupWizardApp extends Application { // Verbose logging public static final boolean LOGV = Log.isLoggable(TAG, Log.VERBOSE); - public static final String ACTION_FINISHED = "org.lineageos.setupwizard.SETUP_FINISHED"; - public static final String ACTION_SETUP_COMPLETE = - "org.lineageos.setupwizard.LINEAGE_SETUP_COMPLETE"; public static final String ACTION_RESTORE_FROM_BACKUP = "com.stevesoltys.seedvault.RESTORE_BACKUP"; public static final String ACTION_EMERGENCY_DIAL = "com.android.phone.EmergencyDialer.DIAL"; @@ -53,7 +50,7 @@ public class SetupWizardApp extends Application { private boolean mIsRadioReady = false; private boolean mIgnoreSimLocale = false; - private final Bundle mSettingsBundle = new Bundle(); + private static final Bundle mSettingsBundle = new Bundle(); private final Handler mHandler = new Handler(Looper.getMainLooper()); private final Runnable mRadioTimeoutRunnable = () -> mIsRadioReady = true; @@ -88,7 +85,7 @@ public class SetupWizardApp extends Application { mIgnoreSimLocale = ignoreSimLocale; } - public Bundle getSettingsBundle() { + public static Bundle getSettingsBundle() { return mSettingsBundle; } } diff --git a/src/org/lineageos/setupwizard/SetupWizardExitWorker.java b/src/org/lineageos/setupwizard/SetupWizardExitWorker.java deleted file mode 100644 index ba721737..00000000 --- a/src/org/lineageos/setupwizard/SetupWizardExitWorker.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2024 The LineageOS Project - * SPDX-License-Identifier: Apache-2.0 - */ - -package org.lineageos.setupwizard; - -import android.content.Context; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.work.CoroutineWorker; -import androidx.work.WorkerParameters; - -import org.lineageos.setupwizard.util.SetupWizardUtils; - -import kotlin.coroutines.Continuation; - -public class SetupWizardExitWorker extends CoroutineWorker { - - public SetupWizardExitWorker(@NonNull Context appContext, - @NonNull WorkerParameters params) { - super(appContext, params); - } - - @Nullable - @Override - public Object doWork(@NonNull Continuation continuation) { - SetupWizardUtils.finishSetupWizard(getApplicationContext()); - return Result.success(); - } -} diff --git a/src/org/lineageos/setupwizard/util/SetupWizardUtils.java b/src/org/lineageos/setupwizard/util/SetupWizardUtils.java index 9dfc5da2..7b10a1f5 100644 --- a/src/org/lineageos/setupwizard/util/SetupWizardUtils.java +++ b/src/org/lineageos/setupwizard/util/SetupWizardUtils.java @@ -11,59 +11,58 @@ import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DISABLED import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_ENABLED; import static android.content.pm.PackageManager.DONT_KILL_APP; import static android.content.pm.PackageManager.GET_ACTIVITIES; -import static android.content.pm.PackageManager.GET_RECEIVERS; -import static android.content.pm.PackageManager.GET_SERVICES; import static android.telephony.TelephonyManager.PHONE_TYPE_GSM; -import static android.telephony.TelephonyManager.SIM_STATE_ABSENT; import static com.android.internal.telephony.PhoneConstants.LTE_ON_CDMA_TRUE; import static com.android.internal.telephony.PhoneConstants.LTE_ON_CDMA_UNKNOWN; +import static com.google.android.setupcompat.util.ResultCodes.RESULT_SKIP; + +import static org.lineageos.setupwizard.SetupWizardApp.DISABLE_NAV_KEYS; +import static org.lineageos.setupwizard.SetupWizardApp.ENABLE_RECOVERY_UPDATE; +import static org.lineageos.setupwizard.SetupWizardApp.KEY_SEND_METRICS; import static org.lineageos.setupwizard.SetupWizardApp.LOGV; +import static org.lineageos.setupwizard.SetupWizardApp.NAVIGATION_OPTION_KEY; +import static org.lineageos.setupwizard.SetupWizardApp.UPDATE_RECOVERY_PROP; import android.app.StatusBarManager; +import android.app.WallpaperManager; import android.content.ComponentName; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; -import android.content.pm.ComponentInfo; -import android.content.pm.PackageInfo; +import android.content.om.IOverlayManager; import android.content.pm.PackageManager; -import android.content.pm.ServiceInfo; import android.content.res.Resources; import android.hardware.biometrics.BiometricManager; import android.net.ConnectivityManager; import android.net.NetworkCapabilities; -import android.os.Binder; +import android.os.Bundle; +import android.os.ServiceManager; import android.os.SystemProperties; import android.os.UserHandle; import android.os.UserManager; import android.provider.Settings; import android.sysprop.TelephonyProperties; -import android.telephony.ServiceState; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.util.Log; -import androidx.work.OneTimeWorkRequest; -import androidx.work.OutOfQuotaPolicy; -import androidx.work.WorkManager; - -import org.lineageos.internal.util.PackageManagerUtils; +import org.lineageos.setupwizard.BaseSetupWizardActivity; import org.lineageos.setupwizard.BiometricActivity; import org.lineageos.setupwizard.BluetoothSetupActivity; import org.lineageos.setupwizard.NetworkSetupActivity; import org.lineageos.setupwizard.ScreenLockActivity; import org.lineageos.setupwizard.SetupWizardApp; -import org.lineageos.setupwizard.SetupWizardExitWorker; import org.lineageos.setupwizard.SimMissingActivity; import java.io.File; -import java.util.ArrayList; import java.util.List; +import lineageos.providers.LineageSettings; + public class SetupWizardUtils { private static final String TAG = SetupWizardUtils.class.getSimpleName(); @@ -153,8 +152,8 @@ public class SetupWizardUtils { public static boolean hasGMS(Context context) { String gmsSuwPackage = hasLeanback(context) ? GMS_TV_SUW_PACKAGE : GMS_SUW_PACKAGE; - if (PackageManagerUtils.isAppInstalled(context, GMS_PACKAGE) && - PackageManagerUtils.isAppInstalled(context, gmsSuwPackage)) { + if (isPackageInstalled(context, GMS_PACKAGE) && + isPackageInstalled(context, gmsSuwPackage)) { PackageManager packageManager = context.getPackageManager(); if (LOGV) { Log.v(TAG, GMS_SUW_PACKAGE + " state = " + @@ -176,21 +175,7 @@ public class SetupWizardUtils { } } - public static void startSetupWizardExitProcedure(Context context) { - try { - WorkManager.getInstance(context).enqueue(new OneTimeWorkRequest.Builder( - SetupWizardExitWorker.class).setExpedited( - OutOfQuotaPolicy.RUN_AS_NON_EXPEDITED_WORK_REQUEST).build()); - } catch (IllegalArgumentException e) { - // finishSetupWizard -- called by the exit worker -- disables components at the end, - // including the WorkManager component required here, so this is likely an error finding - // that component. The worker only needs to run once. We can assume it already has. - Log.w(TAG, "Could not start SetupWizardExitWorker. It has likely already run.", e); - return; - } - } - - public static void finishSetupWizard(Context context) { + public static void finishSetupWizard(BaseSetupWizardActivity context) { if (LOGV) { Log.v(TAG, "finishSetupWizard"); } @@ -210,20 +195,16 @@ public class SetupWizardUtils { Settings.Secure.TV_USER_SETUP_COMPLETE, 1); } - disableComponentsAndSendFinishedBroadcast(context); - } - - private static void disableComponentsAndSendFinishedBroadcast(Context context) { - if (LOGV) { - Log.v(TAG, "Disabling Setup Wizard components and sending FINISHED broadcast."); - } + handleEnableMetrics(context); + handleNavKeys(context); + handleRecoveryUpdate(); + handleNavigationOption(); + WallpaperManager.getInstance(context).forgetLoadedWallpaper(); disableHome(context); - context.sendStickyBroadcastAsUser( - new Intent(SetupWizardApp.ACTION_FINISHED), - Binder.getCallingUserHandle()); - disableComponentSets(context, GET_RECEIVERS | GET_SERVICES); - // Note: The WizardManager component is disabled when the WizardManager exits, - // which happens when FinishActivity calls nextAction while completing. + enableStatusBar(); + context.finishAffinity(); + context.nextAction(RESULT_SKIP); + Log.i(TAG, "Setup complete!"); } public static boolean isBluetoothDisabled() { @@ -273,6 +254,9 @@ public class SetupWizardUtils { } } + /** + * Disable the Home component, which is presumably SetupWizardActivity at this time. + */ public static void disableHome(Context context) { ComponentName homeComponent = getHomeComponent(context); if (homeComponent != null) { @@ -282,7 +266,7 @@ public class SetupWizardUtils { } } - public static ComponentName getHomeComponent(Context context) { + private static ComponentName getHomeComponent(Context context) { Intent intent = new Intent("android.intent.action.MAIN"); intent.addCategory("android.intent.category.HOME"); intent.setPackage(context.getPackageName()); @@ -293,11 +277,6 @@ public class SetupWizardUtils { return comp; } - public static void disableComponentSets(Context context, int flags) { - setComponentListEnabledState(context, getComponentSets(context, flags), - COMPONENT_ENABLED_STATE_DISABLED); - } - public static void disableComponent(Context context, Class cls) { setComponentEnabledState(context, new ComponentName(context, cls), COMPONENT_ENABLED_STATE_DISABLED); @@ -314,42 +293,57 @@ public class SetupWizardUtils { enabledState, DONT_KILL_APP); } - public static void setComponentListEnabledState(Context context, - List componentNames, int enabledState) { - for (ComponentName componentName : componentNames) { - setComponentEnabledState(context, componentName, enabledState); + private static void handleEnableMetrics(Context context) { + Bundle privacyData = SetupWizardApp.getSettingsBundle(); + if (privacyData != null + && privacyData.containsKey(KEY_SEND_METRICS)) { + LineageSettings.Secure.putInt(context.getContentResolver(), + LineageSettings.Secure.STATS_COLLECTION, + privacyData.getBoolean(KEY_SEND_METRICS) + ? 1 : 0); } } - public static List getComponentSets(Context context, int flags) { - int i = 0; - List componentNames = new ArrayList<>(); - try { - PackageInfo allInfo = context.getPackageManager() - .getPackageInfo(context.getPackageName(), flags); - if (allInfo != null) { - if (allInfo.activities != null && (flags & GET_ACTIVITIES) != 0) { - for (ComponentInfo info : allInfo.activities) { - componentNames.add(new ComponentName(context, info.name)); - } - } - if (allInfo.receivers != null && (flags & GET_RECEIVERS) != 0) { - for (ComponentInfo info2 : allInfo.receivers) { - componentNames.add(new ComponentName(context, info2.name)); - } - } - if (allInfo.services != null && (flags & GET_SERVICES) != 0) { - ServiceInfo[] serviceInfoArr = allInfo.services; - int length = serviceInfoArr.length; - while (i < length) { - componentNames.add(new ComponentName(context, serviceInfoArr[i].name)); - i++; - } - } - } - } catch (PackageManager.NameNotFoundException ignored) { + private static void handleNavKeys(Context context) { + if (SetupWizardApp.getSettingsBundle().containsKey(DISABLE_NAV_KEYS)) { + writeDisableNavkeysOption(context, + SetupWizardApp.getSettingsBundle().getBoolean(DISABLE_NAV_KEYS)); + } + } + + private static void handleRecoveryUpdate() { + if (SetupWizardApp.getSettingsBundle().containsKey(ENABLE_RECOVERY_UPDATE)) { + boolean update = SetupWizardApp.getSettingsBundle() + .getBoolean(ENABLE_RECOVERY_UPDATE); + + SystemProperties.set(UPDATE_RECOVERY_PROP, String.valueOf(update)); + } + } + + private static void handleNavigationOption() { + Bundle settingsBundle = SetupWizardApp.getSettingsBundle(); + if (settingsBundle.containsKey(NAVIGATION_OPTION_KEY)) { + IOverlayManager overlayManager = IOverlayManager.Stub.asInterface( + ServiceManager.getService(Context.OVERLAY_SERVICE)); + String selectedNavMode = settingsBundle.getString(NAVIGATION_OPTION_KEY); + + try { + overlayManager.setEnabledExclusiveInCategory(selectedNavMode, + UserHandle.USER_CURRENT); + } catch (Exception ignored) { + } + } + } + + private static void writeDisableNavkeysOption(Context context, boolean enabled) { + final boolean virtualKeysEnabled = LineageSettings.System.getIntForUser( + context.getContentResolver(), LineageSettings.System.FORCE_SHOW_NAVBAR, 0, + UserHandle.USER_CURRENT) != 0; + if (enabled != virtualKeysEnabled) { + LineageSettings.System.putIntForUser(context.getContentResolver(), + LineageSettings.System.FORCE_SHOW_NAVBAR, enabled ? 1 : 0, + UserHandle.USER_CURRENT); } - return componentNames; } public static long getBuildDateTimestamp() { diff --git a/src/org/lineageos/setupwizard/wizardmanager/WizardManager.java b/src/org/lineageos/setupwizard/wizardmanager/WizardManager.java index 44deb57a..b1d3848a 100644 --- a/src/org/lineageos/setupwizard/wizardmanager/WizardManager.java +++ b/src/org/lineageos/setupwizard/wizardmanager/WizardManager.java @@ -23,7 +23,6 @@ import android.os.Bundle; import android.util.Log; import com.google.android.setupcompat.util.ResultCodes; -import com.google.android.setupcompat.util.WizardManagerHelper; import org.lineageos.setupwizard.util.SetupWizardUtils; @@ -71,10 +70,6 @@ public class WizardManager extends Activity { finish(); } - private void addExtras(Intent intent) { - intent.putExtra(WizardManagerHelper.EXTRA_IS_FIRST_RUN, true); - } - private void doAction(String scriptUri, WizardAction action, Intent extras) { Intent intent = action.getIntent(); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); @@ -83,7 +78,6 @@ public class WizardManager extends Activity { + " intent=" + intent + " extras2=" + intent.getExtras() + " action=" + action); } - addExtras(intent); if (extras != null) { intent.putExtras(extras); }