Android 定製Google SetupWizard
阿新 • • 發佈:2018-12-12
Android 定製Google SetupWizard
google setupwizard(開機嚮導) 是可以定製,我們可以替換掉裡面的頁面,也可以新新增頁面,也可以修改原有頁面的部分資源。
修改方法有兩種:
1.利用Runntime Resource Overlay(RRO)機制來替換setupwizard裡面的資源
2.實現指定的BroadcastReceiver,新增頁面也能在該應用中實現
下圖為修改過和新增的頁面:
修改過背景的歡迎頁面
新增的頁面
google 原先頁面
下面看如何修改:
google SetupWizard 是通過res/xml/ 目錄下的 wizard_script.xml (有多個配置檔案)來載入頁面和跳轉的而兩種修改方式都是通過修改wizard_script 來實現的
下面是wizard_script 的一個指令碼片段是一個sim missing page
<WizardAction wizard:uri="intent:#Intent;action=com.android.setupwizard.SIM_MISSING;end" id="sim_missing">
<result wizard:action="carrier_setup" />
</WizardAction>
id 是定義了當前頁面的表示 當其他頁面要跳到此頁面是就通過該id
result 是指此頁面後要跳的頁面id
接下來我們來追加自己的頁面
<!--新增頁-->
<WizardAction
id="nuu_setup"
wizard:uri="intent:#Intent;action=action.NUU_SUW;end">
<result wizard:action="sim_missing" />
</WizardAction>
<!---->
<WizardAction
id="sim_missing"
wizard:uri="intent:#Intent;action=com.android.setupwizard.SIM_MISSING;end" >
<result wizard:action="carrier_setup" />
</WizardAction>
我們將重新修改後的檔案放到我們的apk的目錄下 直接放到對應的目錄下就可以了
也可以通過:
<string name="wizard_script_uri">android.resource://package name/xml/wizard_script</string>
來指定指令碼指向
下面都說下兩種方式:
第一:通過overlay方式 (關於對RRO不懂可另行搜尋)
目錄結構:
manifest的內容如下:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.google.android.setupwizard.overlay">
<overlay
android:priority="1"
android:targetPackage="com.google.android.setupwizard" />
</manifest>
strings.xml 是重新定位指令碼的位置
<resources>
<string name="wizard_script_uri">android.resource://com.google.android.setupwizard.overlay/raw/wizard_script</string>
</resources>
第二種方式:
通過實現:
<receiver android:name=".receiver.PartnerReceiver">
<intent-filter>
<action android:name="com.android.setupwizard.action.PARTNER_CUSTOMIZATION" />
</intent-filter>
</receiver>
PartnerReceiver是不需要什麼內容 只用於google查詢
修改方式一樣