Android RRO机制的运用-----google开机向导客制化
上周五的时候领导分了一个任务,客户让在google开机向导里面增加一页,首先就想到了android的Overlay,然后网上搜了下,发下有很多人写了这方面的技术。而且写的都还不错,所以本篇只当记录作用吧,列下写的比较好的博客:
看情况大家应该都参考的这篇,英文好的可以看下。
Android 运行时资源替换—-Runtime Resource Overlay
既然原理别人都已经写好了,再写就有点浪费时间了,不懂的话可以参考上面两篇博客。
下面直接开始我这个功能的实现。
首先看下我们的基本思路,(解释一点 其实google的开机向导很多页面都来自不同的app)
1、所以我们先要找到把每一页整合到一起的配置文件,
2、找到这个配置文件后在相应的地方增加我们的页面配置。
后面的事就是编写UI之类的 根据需求来就可以了
1、查找配置文件
通过反编译工具可以把SetupWizard的资源文件反编译出来,android的配置文件一般都是xml文件 。所以到现在我们应该已经得到了SetupWizard的配置文件,这个配置文件具体是什么。请往下看。
通过sdk提供的hierarchyviewer工具我们可以得到SetupWizard每个页面的包名
注意到BluOOBEKeepActivity 和BluOOBEActiviy就是我添加的,先忽略掉它们,设置wifi的时候老是跳过 ,下面这张图是走到设置wifi界面的时候截的。
通过上图我们可以知道SetupWizard会走到Setting中去选择连接wifi的界面,别的包名看起来都是google的,google的应用我们一般都没源码,所以就以Settings的这个界面入手,
看Settings中AndroidManifest.xml关于WifiSetupActivity的配置
<activity android:name=".wifi.WifiSetupActivity"
android:taskAffinity="com.android.wizard"
android:theme="@style/SetupWizardDisableAppStartingTheme"
android:label="@string/wifi_setup_wizard_title"
android:icon="@drawable/empty_icon"
android:clearTaskOnLaunch="true"
android:windowSoftInputMode="adjustNothing">
<intent-filter android:priority="1">
<action android:name="com.android.net.wifi.SETUP_WIFI_NETWORK" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
android:value="true" />
</activity>
搜索这些信息发现SetupWizard的资源中并没有找到,很郁闷 ,没办法 唯一的思路不能断呀,只能一路查找它的父类 最后终于在WifiSettingsActivity 中找到了有用的信息
<action android:name="android.settings.WIFI_SETTINGS" />
打开这两个文件查看,基本类似的,只是一个多了user,不知道具体有什么差别,但是通过对比发现 它们基本一样 只是wizard_script比wizard_script_user多了好多页面,但是明显第一个有welcome的页面,第二个没有,所以最终决定在wizard_script添加我们的页面。
<WizardAction wizard:uri="intent:#Intent;action=android.settings.SET_BLUOOBEKEEP;end" id="blu_oobekeep">
<result wizard:action="restore_check" />
</WizardAction>
好了 经过比较蛋疼的查找后终于知道了要把新页面添加到什么地方, 接下来就是添加页面了。
2、最后也决定把这个页面写到Setting中,具体的内容的话就要看各个需求了。
Settings中AndroidManifest添加配置
<activity android:name="com.android.settings.wifi.BluOOBEKeepActivity"
android:theme="@style/SetupWizardTheme.Light"
android:taskAffinity="com.android.wizard">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.settings.SET_BLUOOBEKEEP" />
<action android:name="android.settings.SET_BLUOOBE_NOT_ACCOUNTKEEP" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
Android RRO机制的运用-----google开机向导客制化的更多相关文章
- MTK Android [输入法]客制化系统默认输入法-搜狗输入法
1.frameworks/base/packages/SettingsProvider/res/values/defaults.xml <!--Sogou input method is use ...
- Android MTK平台 客制化系统来电界面(屏蔽 InCallUI 提供接口给客户自行展示来电去电页面)
OS: Android 8.1 需求分析 1.禁止系统来电铃声,提供接口给客户自己播放铃声 2.禁止系统拉起来去电页面(InCallActivity),消息通知客户拉起自己的来去电页面 3.禁止来电消 ...
- Android MTK6580 客制化关机充电动画
1.客制化关机充电图片 vendor/mediatek/proprietary/bootable/bootloader/lk/dev/logo/xxx 找到对应分辨率替换 2.调整显示图片位置.大小 ...
- Android不显示开机向导和开机气泡
修改好的代码下载地址: https://github.com/Vico-H/Launcher 不显示开机向导 修改Launcher2.java的代码 (文件位置: /alps/packages/app ...
- Android广播机制的深入学习
部分内容转载自http://www.cnblogs.com/lwbqqyumidi/p/4168017.html 1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者 ...
- Android IPC机制之AIDL
什么是AIDL AIDL:Android Interface Definition Language,即Android接口定义语言. Android系统中的进程之间不能共享内存,因此,需要提供一些机制 ...
- 理解Android安全机制
本文从Android系统架构着手,分析Android的安全机制以SE Android,最后给出一些Android安全现状和常见的安全解决方案. 1.Android系统架构 Android采用分层的系统 ...
- 6.6 Android 编译机制的变迁
我们使用Java开发android,在编译打包APK文件时,会经过以下流程 Java编译器将应用中所有Java文件编译为class文件(JVM运行的是.class文件,而DVM是.dex文件) dx工 ...
- Android内存机制分析1——了解Android堆和栈
//----------------------------------------------------------------------------------- Android内存机制分析1 ...
随机推荐
- pandas(七)数据规整化:清理、转换、合并、重塑之合并数据集
pandas对象中的数据可以通过一些内置的方式进行合并: pandas.merge 可根据一个或多个键将不同的DataFrame中的行连接起来. pandas.concat可以沿着一条轴将多个对象堆叠 ...
- java 面向对象编程。。。。
经过一周的学习(java),总结了许多,对java的理解,java的类型,运用,安装,基础语法,变量,常量,表达式,语句 java从C语言中继承了大量语言特性.java面向对象编程的基本特征,包括继承 ...
- Linux查看文件指定某些行的内容
查看从第5行开始的100行内容,并把结果重定向到一个新的文件 cat file | tail -n +5 | head -n 100 > newfile.txt 查看第5行到100行的内容,并把 ...
- WPF 字符串溢出判断,字符串长度是否超过控件宽度
TextBloc可以将TextTrimming属性设置为CharacterEllipsis 其他控件可以在控件大小变更或者其他事件上附加下列方法 private void OnEllipsis(obj ...
- C# QQ邮箱授权码发送邮件
using System.Net;using System.Web.Mail; public class SendMail { /// <summary> /// 发送Email /// ...
- BZOJ 4551[Tjoi2016&Heoi2016]树(树链剖分+二分)
Description 在2016年,佳媛姐姐刚刚学习了树,非常开心.现在他想解决这样一个问题:给定一颗有根树(根为1),有以下两种操作:1. 标记操作:对某个结点打上标记(在最开始,只有结点1有标记 ...
- Git -> Can't start Git: git.exe
问题描述 导入别人的PyCharm项目后提示:Can't start Git:git.exe 解决办法 Git就是个类似插件,在Git的官网上注册个账号然后每次编译就会自动把程序上传到网上备份.可以方 ...
- vector数组中STL习惯性用法
参考:https://blog.csdn.net/lcamisak/article/details/79358060
- java.sql.SQLException: null, message from server: "Host '192.168.126.100' is not allowed to connect to this MySQL server"
- 勤拂拭软件Android开发之旅(1) 之 Android 开发环境搭建
勤拂拭软件工作室原创出品,欢迎转载,欢迎交流. 转载请注明原文:http://www.cnblogs.com/wangleiblog/p/6019063.html 勤拂拭软件Android开发之旅目录 ...