[GMS] 如何客制化GMS开机向导

[GMS] 如何客制化GMS开机向导

最近项目中有个任务,要在gms中的谷歌开机向导中加入客制化页面。这里为大家介绍下定制谷歌开机向导的方法。

没有源码,如何修改apk? 答案是—Runtime Resource Overlay(RRO,运行时资源替换)。这里不做详细介绍,有兴趣的同学可以去网上搜索具体的使用方法。我们只要知道这个机制可以帮助我们在没有源码的情况下修改apk就行了。
网上好多说了怎么实现RRO, 可以参考这位老哥的博客
https://blog.csdn.net/u012824529/article/details/90109914
其实在GMS包中已经有示例代码,就是vendor/google/apps/GmsSampleIntegration,我们直接修改这个apk就好,或者自己新建一个都行
第一步:新建一个activity,可以用adb shell am start -a action启动就好,我是直接用的settings里面的页面,这个activity就和正常的一样,没啥特殊的
第二步:配置wizard_script.xml文件,GmsSampleIntegration里面有现成的,直接修改

<WizardAction id="unified_restore_flow"
  wizard:script="android.resource://com.google.android.gmsintegration/raw/wizard_script_unified_restore_flow">
    <result wizard:action="hct_suw_nav" />
</WizardAction>
       <WizardAction id="hct_suw_nav"
    wizard:uri="intent:#Intent;action=android.settings.HctSetupWizardNavigation;end">
    <result  wizard:action="show_privacy_policy" />
</WizardAction>

搜索wizard:action=“oem_post_setup”,都替换成你自己的id wizard:action=“hct_suw_nav”。
这样就会告诉开机向导页面的前后顺序
第三步:最重要的一步,好多教程到这一步就结束了,我操,但是里面的跳过,和下一步怎么实现的都没有说,甚是坑
其实自定义跳转是有现成的接口的,可以获取wizard_script.xml定义的下一个intent,废话不说,直接上代码

public void onNext(int requestCode) {
    int resultCode =  Activity.RESULT_OK;
    Intent intent = WizardManagerHelper.getNextIntent(getIntent(), resultCode);
    try {
        startActivityForResult(intent, requestCode);
        //finish(); 千万不要finish,不然开机向导页面没法滑回上一页面
    } catch (ActivityNotFoundException e) {
        Log.e(TAG, e.getMessage());
    }
}

然后在"跳过""下一步"的点击事件调用

finish.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        onNext(Activity.RESULT_OK);
    }
});

需要注意的是"跳过"是肯定要调到下一页面的,也就是可以直接调用,"下一步"需要做自己配置的话,就完成后再去调用即可

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读