| <?xml version="1.0" encoding="UTF-8"?> |
| <!-- |
| Legend: |
| REQUIRED Must be included in final scripting solution |
| RECOMMENDED Associated with an optional feature; may have |
| dependencies on other recommended actions |
| CUSTOMIZABLE Available for modification, within UX standards |
| |
| Each top-level comment tag applies to one or more script instructions, until the next top-level |
| comment tag. A comment tag on a result code applies only to that result code. |
| |
| The wizard:uris recorded here have the inconvenience of being generated by hand, but they allow |
| for the full spread of launch flags (we need FLAG_ACTIVITY_NEW_TASK [0x10000000]), where the |
| <intent> tag processed by Intent.parseIntent() does not. |
| |
| adb shell am to-intent-uri -a com.android.setupwizard.WELCOME -f 0x10000000 \-\-ez firstRun true |
| --> |
| <WizardScript xmlns:wizard="http://schemas.android.com/apk/res/com.google.android.setupwizard" |
| wizard:version="2"> |
| |
| <!-- Preliminary setup for OEMs [CUSTOMIZABLE] --> |
| <WizardAction id="oem_pre_setup" |
| wizard:uri="intent:#Intent;action=com.android.setupwizard.OEM_PRE_SETUP;end" /> |
| |
| |
| <!-- Welcome screen with language selection [RECOMMENDED, CUSTOMIZABLE] --> |
| <WizardAction id="welcome" |
| wizard:uri="intent:#Intent;action=com.android.setupwizard.WELCOME;end"> |
| <result wizard:name="start_qr_provision" |
| wizard:resultCode="101" |
| wizard:action="check_user_unlock_qr" /> |
| <result wizard:name="dpm_user_complete" |
| wizard:resultCode="111" |
| wizard:action="check_user_unlock_dpm_user_complete" /> |
| <result wizard:name="check_user_unlock_work_setup_interrupted_qr_scan" |
| wizard:resultCode="114" |
| wizard:action="check_user_unlock_work_setup_interrupted_qr_scan" /> |
| <result wizard:name="check_user_unlock_work_setup_interrupted_consumer_flow" |
| wizard:resultCode="115" |
| wizard:action="check_user_unlock_work_setup_interrupted_consumer_flow" /> |
| <result wizard:action="check_user_unlock" /> |
| </WizardAction> |
| |
| <WizardAction id="check_user_unlock_work_setup_interrupted_qr_scan" |
| wizard:uri="intent:#Intent;action=com.android.setupwizard.CHECK_USER_UNLOCK;end" /> |
| |
| <WizardAction id="work_setup_interrupted_qr_scan" |
| wizard:uri="intent:#Intent;action=com.google.android.setupwizard.WORK_SETUP_INTERRUPTED;end"> |
| <result wizard:name="continue_start_qr_scan" |
| wizard:resultCode="1" |
| wizard:action="check_user_unlock_qr" /> |
| <result wizard:action="factory_reset" /> |
| </WizardAction> |
| |
| <WizardAction id="check_user_unlock_work_setup_interrupted_consumer_flow" |
| wizard:uri="intent:#Intent;action=com.android.setupwizard.CHECK_USER_UNLOCK;end" /> |
| |
| <WizardAction id="work_setup_interrupted_consumer_flow" |
| wizard:uri="intent:#Intent;action=com.google.android.setupwizard.WORK_SETUP_INTERRUPTED;end"> |
| <result wizard:name="continue_start_consumer_flow" |
| wizard:resultCode="1" |
| wizard:action="check_user_unlock" /> |
| <result wizard:action="factory_reset" /> |
| </WizardAction> |
| |
| <WizardAction id="check_user_unlock_qr" |
| wizard:uri="intent:#Intent;action=com.android.setupwizard.CHECK_USER_UNLOCK;end"> |
| <result wizard:action="qr_provision_flow" /> |
| </WizardAction> |
| |
| <WizardAction id="check_user_unlock_dpm_user_complete" |
| wizard:uri="intent:#Intent;action=com.android.setupwizard.CHECK_USER_UNLOCK;end"> |
| <result wizard:action="oem_post_setup" /> |
| </WizardAction> |
| |
| <WizardAction id="check_user_unlock" |
| wizard:uri="intent:#Intent;action=com.android.setupwizard.CHECK_USER_UNLOCK;end" /> |
| |
| |
| <!-- Check which existing profile should be enabled [RECOMMENDED, CUSTOMIZABLE] --> |
| <WizardAction id="slots_selection" |
| wizard:uri="intent:#Intent;action=com.android.setupwizard.SLOTS_SELECTION;end"> |
| <result wizard:name="skip" |
| wizard:resultCode="1" |
| wizard:action="sim_missing" /> |
| <result wizard:action="carrier_setup" /> |
| </WizardAction> |
| |
| |
| <!-- Notify user if expected SIM is not found [RECOMMENDED, CUSTOMIZABLE] --> |
| <WizardAction id="sim_missing" |
| wizard:uri="intent:#Intent;action=com.android.setupwizard.SIM_MISSING;end"> |
| <result wizard:name="esim" |
| wizard:resultCode="101" |
| wizard:action="esim_intro" /> |
| <result wizard:name="esim_only" |
| wizard:resultCode="102" |
| wizard:action="carrier_setup" /> |
| </WizardAction> |
| |
| <WizardAction id="sim_ready" |
| wizard:uri="intent:#Intent;action=com.android.setupwizard.SIM_READY;end" > |
| <result wizard:action="carrier_setup" /> |
| </WizardAction> |
| |
| <WizardAction id="esim_intro" |
| wizard:uri="intent:#Intent;action=com.android.setupwizard.ESIM_INTRO;end" /> |
| |
| |
| <!-- Activate carrier services [RECOMMENDED] --> |
| <WizardAction id="carrier_setup" |
| wizard:uri="intent:#Intent;action=com.android.setupwizard.CARRIER_SETUP;end"> |
| <result wizard:name="all_subscriptions_completed" |
| wizard:resultCode="98765" |
| wizard:action="sim_setup" /> |
| |
| <!-- Return to carrier_setup to check for other subscriptions for multi-SIM --> |
| <result wizard:action="carrier_setup" /> |
| </WizardAction> |
| |
| |
| <!-- On multi-SIM devices, choose which SIM to use for voice, data, and text [RECOMMENDED, CUSTOMIZABLE] --> |
| <WizardAction id="sim_setup" |
| wizard:uri="intent:#Intent;action=com.android.setupwizard.SIM_SETUP;end" /> |
| |
| |
| <!-- Security warning (for enterprise) [RECOMMENDED] --> |
| <WizardAction id="device_owner_warning" |
| wizard:uri="intent:#Intent;action=com.google.android.setupwizard.DEVICE_OWNER_WARNING;end"> |
| <result wizard:name="skip" |
| wizard:resultCode="1" |
| wizard:action="check_frp" /> |
| </WizardAction> |
| |
| <!-- Factory reset should cause a reboot, but if it returns unexpectedly, continue on to check_frp --> |
| <WizardAction id="factory_reset" |
| wizard:uri="intent:#Intent;action=com.google.android.setupwizard.FACTORY_RESET;end" /> |
| |
| |
| <!-- Wait to check factory reset protection status [RECOMMENDED] --> |
| <WizardAction id="check_frp" |
| wizard:uri="intent:#Intent;action=com.google.android.setupwizard.CHECK_FRP;end" /> |
| |
| |
| <!-- Network selection and packages update [REQUIRED, CUSTOMIZABLE] --> |
| <WizardAction id="connect_and_update" |
| wizard:script="android.resource://com.google.android.gmsintegration/raw/wizard_script_connect_and_update_flow"> |
| <result wizard:name="no_connection" |
| wizard:resultCode="1" |
| wizard:action="no_network_flow" /> |
| </WizardAction> |
| |
| |
| <!-- Zero touch provisioning (for enterprise) [RECOMMENDED] --> |
| <WizardAction id="zero_touch" |
| wizard:script="android.resource://com.google.android.gmsintegration/raw/wizard_script_zero_touch_flow" > |
| <result wizard:name="dpm_user_complete" |
| wizard:resultCode="111" |
| wizard:action="post_dpm_user_flow" /> |
| <result wizard:name="add_personal_account" |
| wizard:resultCode="120" |
| wizard:action="add_personal_account" /> |
| </WizardAction> |
| |
| |
| <!-- Choose between restoring or set up as new device [RECOMMENDED, CUSTOMIZABLE] --> |
| <WizardAction id="flow_choice" |
| wizard:uri="intent:#Intent;action=com.android.setupwizard.FLOW_CHOICE;end"> |
| <result wizard:name="skip" |
| wizard:resultCode="1" |
| wizard:action="setup_as_new_flow" /> |
| <result wizard:name="demo_mode_flow" |
| wizard:resultCode="101" |
| wizard:action="exit" /> |
| <result wizard:name="unified_restore_flow" |
| wizard:resultCode="102" |
| wizard:action="unified_restore_flow" /> |
| </WizardAction> |
| |
| |
| <!-- Restore from an existing account or device [RECOMMENDED, CUSTOMIZABLE] --> |
| <WizardAction id="restore_flow" |
| wizard:script="android.resource://com.google.android.gmsintegration/raw/wizard_script_restore_flow"> |
| <result wizard:action="oem_post_setup" /> |
| </WizardAction> |
| |
| |
| <!-- Restore from an existing account or device [RECOMMENDED, CUSTOMIZABLE] --> |
| <WizardAction id="unified_restore_flow" |
| wizard:script="android.resource://com.google.android.gmsintegration/raw/wizard_script_unified_restore_flow"> |
| <result wizard:action="oem_post_setup" /> |
| </WizardAction> |
| |
| |
| <!-- Set up as a new device [REQUIRED, CUSTOMIZABLE] --> |
| <WizardAction id="setup_as_new_flow" |
| wizard:script="android.resource://com.google.android.gmsintegration/raw/wizard_script_setup_as_new_flow"> |
| <result wizard:action="oem_post_setup" /> |
| </WizardAction> |
| |
| |
| <!-- Set up without a network connection [RECOMMENDED] --> |
| <WizardAction id="no_network_flow" |
| wizard:script="android.resource://com.google.android.gmsintegration/raw/wizard_script_no_network_flow"> |
| <result wizard:action="oem_post_setup" /> |
| </WizardAction> |
| |
| <!-- Add personal account after work profile provisioning [REQUIRED] --> |
| <WizardAction id="add_personal_account" |
| wizard:script="android.resource://com.google.android.gmsintegration/raw/wizard_script_add_personal_account_flow" /> |
| |
| <!-- Flow to run after a user-led device policy managed setup. [RECOMMENDED] --> |
| <WizardAction id="post_dpm_user_flow" |
| wizard:script="android.resource://com.google.android.gmsintegration/raw/wizard_script_post_dpm_user_flow"> |
| <result wizard:action="oem_post_setup" /> |
| </WizardAction> |
| |
| <!-- QR provision flow (for enterprise) [RECOMMENDED] --> |
| <WizardAction id="qr_provision_flow" |
| wizard:script="android.resource://com.google.android.gmsintegration/raw/wizard_script_qr_provision_flow" /> |
| |
| |
| <!-- OEM completion [CUSTOMIZABLE] --> |
| <WizardAction id="oem_post_setup" |
| wizard:uri="intent:#Intent;action=com.android.setupwizard.OEM_POST_SETUP;end" /> |
| |
| |
| <!-- Google kid account setup. Must be the last setup action. [REQUIRED] --> |
| <WizardAction id="kid_post_setup" |
| wizard:uri="intent:#Intent;action=com.google.android.setupwizard.KID_POST_SETUP;end" /> |
| |
| |
| <!-- Leave Setup Wizard [REQUIRED] --> |
| <WizardAction id="exit" |
| wizard:uri="intent:#Intent;action=com.android.setupwizard.EXIT;end" /> |
| |
| </WizardScript> |