1. 程式人生 > >Android 定製Google SetupWizard

Android 定製Google SetupWizard

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查詢
修改方式一樣
這裡寫圖片描述