Android 8.1自定义开机向导

时间:2024-03-23 13:29:15

       在Android设备第一次上电的时候会进行一个国家和语言及搜台的选择,其具体的实现都是在Provision.apk 中实现的,对于Provision.apk 这个apk 应用大家可能比较陌生,它位于Android目录的packages\apps/下,它的主要作用是作为开机引导用户进行一些基本设置.在原生的 android 系统中,provision非常的简单,只有一个空白的 activity,这个主要就是留给 厂商自己定制开机向导(像 OPPO,VIVO,小米等厂商会让你登陆和注册其账号帐号,连接WiFi等),因此我们得理解Android的设计意图而进行定制.,它只会在升级和恢复出厂设置的时候被调用。

 

      我们先看AndroidManifest.xml。就一个DefaultActivity,DefaultActivity是原生系统Provision中唯一的activity;配置了category.HOME属性,category.HOME是桌面程序的标记(Launcher程序都会配置);priority=1,配置优先级,这样就会在系统的Launcher之前启动.

Android 8.1自定义开机向导

Provision中的关键代码:

Android 8.1自定义开机向导

这里代码主要设置DEVICE_PROVISIONED标记同时禁止本身Activity组件的功能

API:

void setComponentEnabledSetting (ComponentName componentName, int newState, int flags) 

componentName:组件名称 

newState:组件新的状态,可以设置三个值,分别是如下: 

不可用状态:COMPONENT_ENABLED_STATE_DISABLED 

可用状态:COMPONENT_ENABLED_STATE_ENABLED 

默认状态:COMPONENT_ENABLED_STATE_DEFAULT 

flags:行为标签,值可以是DONT_KILL_APP或者0. 0说明杀死包含该组件的app 

 

若要定制自定义的开机向导,则只需要在DefaultActivity中加入自定义的内容,再调用finishSetupWizard()方法把它关掉即可。

以下是我写的一个小dome:https://download.csdn.net/download/qq_32390877/10574773