简介

android开机向导一般是谷歌的应用,是没有源码的.但是谷歌提供了接口供OME自定义.能够简单实现在开机向导中增加自己界面的功能.自定义开机向导要两个部分.第一部分是要添加的用户界面.第二部分谷歌提供的客制化接口.需要注意的是不同android版本,可能定制的方法不一样.这里我记录的是android P版本.

编写需要加入的界面

加入开机向导的界面有以下要求:

  1. 对应的Activity能够通过action直接启动,如:adb shell am start -a ACTION
  2. 不能在操作完成之后finish掉activity,否则会弹回到上一个界面

这个官方文档例子

public class MyActivity extends Activity {    private static final int NEXT_REQUEST_CODE = 1; // Can be any positive int     //--------1--------//    public void done(boolean success) {        int resultCode = success ? Activity.RESULT_OK : ResultCodes.RESULT_SKIP;        //--------2--------//        Intent intent = WizardManagerHelper.getNextIntent(getIntent(), resultCode); //        startActivityForResult(intent, NEXT_REQUEST_CODE);        // finish();  // Optional. Calling finish will remove this activity from the                      // back stack, such that this activity will be skipped if the                      // user clicks back from the next screen.    }}

上面1处,done这个方法,是在用户点击skip或完成界面操作后调用,如果是跳过就返回RESULT_SKIP,否则RESULT_OK,这个返回值在后面的脚本配置用得上.后面的Finnish被官方注释掉,官方特别提示不能finish,亲测finish后,会直接返回到上一个界面,导致无法结束开机向导
上面2处对应的Intent,它的action是action com.android.wizard.NEXT,这个action是通知开机向导进入下一个界面.通过抓log可以发现,开机向导每一个界面的跳转都会发这个action

编写脚本加入自己的界面

以前是通过自己写apk来配置脚本,android 8后,谷歌在gms包内加一个GmsSampleIntegration应用,通过这个应用配置开机向导和launcher.这里我们要用其配置开机向导的功能.配置脚本在
vendor/google/apps/GmsSampleIntegration/res/raw

在config.xm定义了初始的脚本android.resource://com.google.android.gmsintegration/raw/wizard_script

脚本的格式如下:

<?xml version="1.0" encoding="UTF-8"?>                                

wizard:name: 是个标签,方便其他地方调用这个WizardAction
wizard:uri: 这个WizardAction对应的action,对应activity的action放在里面,
wizard:resultCode: 就是上面代码的返回值.这个的action就是对应activity的action,

上面的界面就是在fingerprint在执行skip后,进入face_unlock这个界面.face_unlock就是com.android.settings.suggested.FACEID_ENROLL这个action的界面.
如果需要不管返回结果,下个界面都要跳转到face_unlock就把

        

替换

问题总结

(1)无法跳转到指定界面
确保你action是正确的,用adb验证一下,

(2)点击skip或完成操作后退回上一步
看Activity是否用finish结束了

(3)如果所使用的Activity是之前setting的界面,在结束的时候调用finish了
客户自己在写一个界面,然后startActivtyForResult调用指定界面,然后onActivityResult处理

更多相关文章

  1. Android(安卓)PocketSphinx离线语音识别集成总结
  2. Android(安卓)API Guides---User Interface
  3. Android用户界面设计:框架布局
  4. 让你大开眼界的10款Android界面设计
  5. [Android]继承式UI界面布局设计
  6. Android应用程序的开机自启动
  7. Android(安卓)Studio实现一个点餐系统
  8. Android小项目之--前台界面与用户交互的对接 进度条与拖动条(附源
  9. Android用户界面设计学习之旅-第二站

随机推荐

  1. webkit里网页调用android的方法(函数)
  2. android 内核编程
  3. Android学习之Intent实现页面跳转
  4. 定制android通知(Notification)
  5. Android(4.Activity的基本控件)
  6. Binder驱动之内存映射----binder_mmap
  7. 说说在 Android(安卓)中如何发送 HTTP 请
  8. 初识Activity
  9. android浏览本地html
  10. Android源码珍藏