Android RRO机制的运用-----google开机向导客制化
来源:互联网 发布:如何忘记前任知乎 编辑:程序博客网 时间:2024/04/25 02:38
上周五的时候领导分了一个任务,客户让在google开机向导里面增加一页,首先就想到了android的Overlay,然后网上搜了下,发下有很多人写了这方面的技术。而且写的都还不错,所以本篇只当记录作用吧,列下写的比较好的博客:
http://developer.sonymobile.com/2014/04/22/sony-contributes-runtime-resource-overlay-framework-to-android-code-example/
看情况大家应该都参考的这篇,英文好的可以看下。
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开机向导客制化
- 跳过 google的开机向导 SetupWizard
- android开机向导的实现
- android开机向导的实现
- 客制化开机向导符合Google认证要求
- Android M 概率跳不过google开机向导原因分析
- android 开机向导
- android开机向导实现
- 如何客制化自己的开机向导
- 如何客制化自己的开机向导
- 开机向导的制作思路
- Android开机向导setupwizard,设置系统语言,WiFi向导
- Android Provision(开机向导setupwizard程序)
- android 开机向导OOBE源码分析
- android MTK 禁止第一次开机向导
- 自定义Android资源覆盖rro方案
- 自定义Android资源覆盖rro方案
- 安卓开机引导(向导)页面,类似google开机设置引导
- Windows 配置PHP7开发环境
- RecyclerView布局的点击(并非item的点击)
- unity 2D游戏开发 制作帧动画的两种方法
- Android studio中git使用及git配置路径
- 4个垃圾收集算法
- Android RRO机制的运用-----google开机向导客制化
- 查询SQL相关信息
- Navicat Premium相关注册码
- Spring 初探(十五)(Validator及ContextLoaderListener)
- SpringMVC+HibernateValidator,配置在properties文件中的错误信息回显前端页面出现中文乱码
- redis基础知识备忘
- json的解释
- Android中的文件存储位置分析
- 进程间的通信