在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自定义开机向导_第1张图片

Provision中的关键代码:

Android 8.1自定义开机向导_第2张图片

这里代码主要设置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

 

更多相关文章

  1. Android 8.0 SystemUI下拉状态栏快捷开关
  2. 应用组件-应用程序介绍
  3. Android 利用addView 动态给Activity添加View组件
  4. Android之隐式意图(Intent)如何查找匹配的组件
  5. 好用的ReactNative下拉刷新上拉加载的组件,支持iOS和Android
  6. 关于Android中四类核心组件的简介
  7. 解开Android应用程序组件Activity的"singleTask"之谜(1)
  8. Android官方刷新组件 SwipeRefreshLayout 的使用
  9. Android四大组件之Activity

随机推荐

  1. EditText 不显示光标 光标消失
  2. Activity详解——Activity的xml配置
  3. android 应用自动升级
  4. 禁止手机横竖屏
  5. Android基本布局-FrameLayout
  6. android日历之滚动选择日期类似ios
  7. android琐碎记四
  8. Mac下启动AndroidStudio失败
  9. adb shell命令大全
  10. How to change an Android(安卓)app's na