blob: edaa5b27355c295868fc89d1562924e4b39848e1 [file] [log] [blame]
cretin450328b872015-01-15 16:04:44 -08001/*
2 * Copyright (C) 2013 The CyanogenMod Project
Michael W29e77742021-03-17 22:47:01 +01003 * Copyright (C) 2017-2021 The LineageOS Project
cretin450328b872015-01-15 16:04:44 -08004 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
Michael Bestasc83309e2018-02-03 17:42:13 +020018package org.lineageos.setupwizard;
cretin450328b872015-01-15 16:04:44 -080019
20
21import android.app.Application;
Artem Borisovfbf886e2020-12-07 13:43:19 +000022import android.app.StatusBarManager;
cretin453593f032016-04-20 16:21:05 -070023import android.os.Bundle;
cretin45f654deb2015-04-14 17:28:37 -070024import android.os.Handler;
cretin45d4cea552016-04-25 11:00:04 -070025import android.util.Log;
cretin450328b872015-01-15 16:04:44 -080026
Michael Bestasc83309e2018-02-03 17:42:13 +020027import org.lineageos.setupwizard.util.NetworkMonitor;
28import org.lineageos.setupwizard.util.PhoneMonitor;
29import org.lineageos.setupwizard.util.SetupWizardUtils;
cretin450d31b312015-03-09 14:49:31 -070030
cretin450328b872015-01-15 16:04:44 -080031public class SetupWizardApp extends Application {
32
33 public static final String TAG = SetupWizardApp.class.getSimpleName();
34 // Leave this off for release
35 public static final boolean DEBUG = false;
cretin45d4cea552016-04-25 11:00:04 -070036 /* Verbose Logging */
37 public static final boolean LOGV = Log.isLoggable(TAG, Log.VERBOSE);
cretin450328b872015-01-15 16:04:44 -080038
Torsten Groteda1355a2019-04-02 11:32:55 -030039 public static final String ACTION_SETUP_COMPLETE = "org.lineageos.setupwizard.LINEAGE_SETUP_COMPLETE";
Michael Bestasc83309e2018-02-03 17:42:13 +020040 public static final String ACTION_FINISHED = "org.lineageos.setupwizard.SETUP_FINISHED";
Abhisek Devkotaaadbc732018-01-31 01:33:59 -080041 public static final String ACTION_SETUP_WIFI = "android.net.wifi.PICK_WIFI_NETWORK";
Chirayu Desaie372bc02020-05-28 00:26:19 +053042 public static final String ACTION_SETUP_BIOMETRIC = "android.settings.BIOMETRIC_ENROLL";
Ricardo Cerqueira83316022016-08-10 12:33:05 +010043 public static final String ACTION_SETUP_LOCKSCREEN = "com.android.settings.SETUP_LOCK_SCREEN";
Torsten Grotefc026fc2019-09-04 15:58:07 -030044 public static final String ACTION_RESTORE_FROM_BACKUP = "com.stevesoltys.seedvault.RESTORE_BACKUP";
cretin45d4cea552016-04-25 11:00:04 -070045 public static final String ACTION_EMERGENCY_DIAL = "com.android.phone.EmergencyDialer.DIAL";
46 public static final String ACTION_NEXT = "com.android.wizard.NEXT";
47 public static final String ACTION_LOAD = "com.android.wizard.LOAD";
48
cretin45d4cea552016-04-25 11:00:04 -070049 public static final String EXTRA_HAS_MULTIPLE_USERS = "hasMultipleUsers";
d34db28f9c02015-07-07 17:30:20 -070050 public static final String EXTRA_TITLE = "title";
51 public static final String EXTRA_DETAILS = "details";
cretin45d4cea552016-04-25 11:00:04 -070052 public static final String EXTRA_SCRIPT_URI = "scriptUri";
53 public static final String EXTRA_ACTION_ID = "actionId";
54 public static final String EXTRA_RESULT_CODE = "com.android.setupwizard.ResultCode";
Abhisek Devkotaaadbc732018-01-31 01:33:59 -080055 public static final String EXTRA_PREFS_SHOW_BUTTON_BAR = "extra_prefs_show_button_bar";
56 public static final String EXTRA_PREFS_SET_BACK_TEXT = "extra_prefs_set_back_text";
cretin450328b872015-01-15 16:04:44 -080057
cretin45c5e926d2015-06-17 13:56:09 -070058 public static final String KEY_DETECT_CAPTIVE_PORTAL = "captive_portal_detection_enabled";
cretin453593f032016-04-20 16:21:05 -070059 public static final String KEY_SEND_METRICS = "send_metrics";
60 public static final String DISABLE_NAV_KEYS = "disable_nav_keys";
Timie90cf312020-12-23 13:28:00 +010061 public static final String ENABLE_RECOVERY_UPDATE = "enable_recovery_update";
62 public static final String UPDATE_RECOVERY_PROP = "persist.vendor.recovery_update";
cretin45e001f972015-02-19 13:01:28 -080063
cretin450328b872015-01-15 16:04:44 -080064 public static final int REQUEST_CODE_SETUP_WIFI = 0;
cretin45e001f972015-02-19 13:01:28 -080065 public static final int REQUEST_CODE_SETUP_CAPTIVE_PORTAL= 4;
dhacker29218deb92015-04-23 22:54:36 -040066 public static final int REQUEST_CODE_SETUP_BLUETOOTH= 5;
Chirayu Desaie372bc02020-05-28 00:26:19 +053067 public static final int REQUEST_CODE_SETUP_BIOMETRIC = 7;
Ricardo Cerqueira83316022016-08-10 12:33:05 +010068 public static final int REQUEST_CODE_SETUP_LOCKSCREEN = 9;
Torsten Grotefc026fc2019-09-04 15:58:07 -030069 public static final int REQUEST_CODE_RESTORE = 10;
cretin450328b872015-01-15 16:04:44 -080070
cretin45f654deb2015-04-14 17:28:37 -070071 public static final int RADIO_READY_TIMEOUT = 10 * 1000;
72
Artem Borisovfbf886e2020-12-07 13:43:19 +000073 private static StatusBarManager sStatusBarManager;
74
cretin45f654deb2015-04-14 17:28:37 -070075 private boolean mIsRadioReady = false;
cretin453593f032016-04-20 16:21:05 -070076 private boolean mIgnoreSimLocale = false;
cretin4577108552015-05-07 16:21:10 -070077
cretin453593f032016-04-20 16:21:05 -070078 private final Bundle mSettingsBundle = new Bundle();
cretin45f654deb2015-04-14 17:28:37 -070079 private final Handler mHandler = new Handler();
80
Michael W2236d292018-07-15 15:09:20 +020081 private final Runnable mRadioTimeoutRunnable = () -> mIsRadioReady = true;
cretin45f654deb2015-04-14 17:28:37 -070082
cretin450328b872015-01-15 16:04:44 -080083 @Override
84 public void onCreate() {
85 super.onCreate();
cretin45d4cea552016-04-25 11:00:04 -070086 if (LOGV) {
87 Log.v(TAG, "onCreate()");
88 }
89 NetworkMonitor.initInstance(this);
90 PhoneMonitor.initInstance(this);
cretin45d4cea552016-04-25 11:00:04 -070091 SetupWizardUtils.disableComponentsForMissingFeatures(this);
Michael W29e77742021-03-17 22:47:01 +010092 SetupWizardUtils.setMobileDataEnabled(this, false);
Artem Borisovfbf886e2020-12-07 13:43:19 +000093 sStatusBarManager = SetupWizardUtils.disableStatusBar(this);
cretin45f654deb2015-04-14 17:28:37 -070094 mHandler.postDelayed(mRadioTimeoutRunnable, SetupWizardApp.RADIO_READY_TIMEOUT);
95 }
96
Artem Borisovfbf886e2020-12-07 13:43:19 +000097 public static StatusBarManager getStatusBarManager() {
98 return sStatusBarManager;
99 }
100
cretin45f654deb2015-04-14 17:28:37 -0700101 public boolean isRadioReady() {
102 return mIsRadioReady;
103 }
104
105 public void setRadioReady(boolean radioReady) {
106 if (!mIsRadioReady && radioReady) {
107 mHandler.removeCallbacks(mRadioTimeoutRunnable);
108 }
109 mIsRadioReady = radioReady;
cretin450328b872015-01-15 16:04:44 -0800110 }
111
cretin453593f032016-04-20 16:21:05 -0700112 public boolean ignoreSimLocale() {
113 return mIgnoreSimLocale;
cretin450328b872015-01-15 16:04:44 -0800114 }
115
cretin453593f032016-04-20 16:21:05 -0700116 public void setIgnoreSimLocale(boolean ignoreSimLocale) {
117 mIgnoreSimLocale = ignoreSimLocale;
118 }
119
120 public Bundle getSettingsBundle() {
121 return mSettingsBundle;
cretin450328b872015-01-15 16:04:44 -0800122 }
cretin450328b872015-01-15 16:04:44 -0800123}