当前位置: 首页 > backend >正文

Android开机向导定制(1)开机向导加载流程

   SetupWizard开机引导是一个系统APP,第一次开机或者恢复出厂设置后,优先于其他APP启动,完成系统设置。

1、打开/vendor/sprd/platform/packages/apps/SetupWizard/AndroidManifest.xml

找到:    

..........................................
<application     android:label="@string/app_name"android:icon="@mipmap/ic_launcher"android:theme="@style/SudThemeGlifV3.Light"android:uiOptions="none"android:taskAffinity="com.android.wizard"android:name=".SetupWizardApp">
.........................................

先看SetupWizardApp做了什么,在SetupWizardApp的onCreate方法:

  @Overridepublic void onCreate() {super.onCreate();if (LOGV) {Log.v(TAG, "onCreate()");}NetworkMonitor.initInstance(this);PhoneMonitor.initInstance(this);SetupWizardUtils.disableComponentsForMissingFeatures(this);SetupWizardUtils.setMobileDataEnabled(this, false); sStatusBarManager = SetupWizardUtils.disableStatusBar(this);mHandler.postDelayed(mRadioTimeoutRunnable, SetupWizardApp.RADIO_READY_TIMEOUT);}

在开机引导模式下,状态栏、无线数据是被禁止使用的。

继续转到AndroidManifest.xml,找到

<activity android:name=".SetupWizardActivity"android:label="@string/activity_label_empty"android:lockTaskMode="normal"android:launchMode="singleTask"android:excludeFromRecents="true"android:configChanges="keyboard|keyboardHidden|mcc|mnc|orientation|screenSize"android:immersive="true"android:exported="false"android:windowSoftInputMode="stateAlwaysHidden"android:theme="@style/NoDisplay"><intent-filter android:priority="9"><action android:name="android.intent.action.MAIN" /><action android:name="android.intent.action.DEVICE_INITIALIZATION_WIZARD" /><category android:name="android.intent.category.HOME" /><category android:name="android.intent.category.DEFAULT" /></intent-filter></activity>

SetupWizardActivity是主启动Activity,android:priority="9"指名接收优先级最高。

在SetupWizardActivity的onCreate方法:

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);if (LOGV) {Log.v(TAG, "onCreate savedInstanceState=" + savedInstanceState);}if (WizardManagerHelper.isUserSetupComplete(this)) {SetupWizardUtils.finishSetupWizard(this);finish();} else {onSetupStart();SetupWizardUtils.enableComponent(this, WizardManager.class);Intent intent = new Intent(ACTION_LOAD);if (isPrimaryUser()) {intent.putExtra(EXTRA_SCRIPT_URI,getString(R.string.lineage_wizard_script_user_uri));}intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | FLAG_GRANT_READ_URI_PERMISSION);try{startActivity(intent);}catch(Exception e){finish();}finish();}}

代码看,开机向导完成后,SetupWizardActivity每次开机重启后并不是不启动,而是判断已经设置完成后,就直接finish了,而开机设置是通过intent传递参数启动后面的设置。

打开strings.xml,找到相应的value:

................................................. 
<string name="lineage_wizard_script_user_uri" translatable="false">android.resource://org.lineageos.setupwizard/raw/lineage_wizard_script_user</string>
.............................................

真正后面要执行的是raw资源下的lineage_wizard_script,这是一个xml文件,后面再介绍这个。

http://www.xdnf.cn/news/8985.html

相关文章:

  • 小土堆pytorch--损失函数与反向传播
  • Godot的RichTextLabel富文本标签,鼠标拖拽滚动,方向键滚动,底部吸附,自动滚动
  • 微信小程序进阶第2篇__事件类型_冒泡_非冒泡
  • 【QT】TXT文件的基础操作
  • 运行打印Hello World启动了多少线程?
  • Python线程同步:保障多线程程序的稳定性与正确性
  • 加速科技荣登2025杭州准独角兽榜单
  • ChatGPT 如何工作——提示工程、对话记忆与上下文管理解析
  • 临床试验中的独立数据监查委员会
  • hadoop纠删码基本原理
  • 【Fifty Project - D31】
  • 【ArcGIS】ArcGIS AI 助手----复现
  • Java设计模式之观察者模式:从基础到高级的全面解析
  • MySql(二)
  • 高效的接口自动化测试工具:Apifox
  • 学习threejs,使用three-spritetext实现黑客帝国数字雨效果
  • Kafka Kraft模式集群 + ssl
  • 14.测速小车(测速模块)
  • Linux连接服务器全攻略:从基础到进阶
  • AI时代新词-生成对抗网络(GAN)
  • 最新Spring Security实战教程(十六)微服务间安全通信 - JWT令牌传递与校验机制
  • CMake指令:set()
  • 行为型:策略模式
  • Flink流处理基础概论
  • 20250526惠普HP锐14 AMD锐龙 14英寸轻薄笔记本电脑(八核R7-7730U)的显卡驱动下载
  • 记录 | Android TextView 中的滚动方向
  • 基于Python flask 的豆瓣电影top250数据评分可视化
  • 数据结构与算法学习笔记(Acwing 提高课)----动态规划·区间DP
  • 【C++指南】string(四):编码
  • 单细胞数据分析(五):三种整合单细胞数据(Harmony、fastMNN、SCTransform)的完整流程