Android Google 开机向导定制 setup wizard

这篇具有很好参考价值的文章主要介绍了Android Google 开机向导定制 setup wizard。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Android 开机向导定制

采用 rro_overlays 机制来定制开机向导,定制文件如下:

GmsSampleIntegrationOverlay$ tree
.
├── Android.bp
├── AndroidManifest.xml
└── res
└── raw
├── wizard_script_common_flow.xml
├── wizard_script_customize_flow.xml
└── wizard_script.xml

Android.bp

runtime_resource_overlay {
    name: "GmsSampleIntegrationOverlay",
    product_specific: true,
}

在项目对应的.mk 文件添加编译引用

PRODUCT_PACKAGES += \
        GmsSampleIntegrationOverlay

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<!--
#/*
# * Copyright (C) 2023 Lens Technology (Xiangtan) Co.,Ltd, All rights reserved.
# * Author: XT900109
# */
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.xxxx.gmssampleintegrationsoverlay"
    android:versionCode="1"
    android:versionName="1.0">

    <application android:hasCode="false" />

    <overlay android:targetPackage="com.google.android.gmsintegration"
        android:priority="0"
        android:isStatic="true" />
</manifest>

rro_overlays/GmsSampleIntegrationOverlay/res/raw/wizard_script_lens_customize_flow.xml

自定义 wizard_script_customize_flow.xml

<?xml version="1.0" encoding="UTF-8"?>
<!--
    The wizard:uris recorded here have the inconvenience of being generated by hand, but they allow
    for the full spread of launch flags (we need FLAG_ACTIVITY_NEW_TASK [0x10000000]), where the
    <intent> tag processed by Intent.parseIntent() does not.

    adb shell am to-intent-uri -a com.android.setupwizard.WELCOME -f 0x10000000 \-\-ez firstRun true
-->

<WizardScript xmlns:wizard="http://schemas.android.com/apk/res/com.google.android.setupwizard"
    wizard:firstAction="user_terms_of_service1">

    <WizardAction id="user_terms_of_service1"
        wizard:uri="intent:#Intent;action=com.android.setupwizard.USER_TERMS_OF_SERVICE;end" >
        <result wizard:action="user_service_notice" />
    </WizardAction>

    <WizardAction id="user_service_notice"
        wizard:uri="intent:#Intent;action=com.android.setupwizard.USER_SETUP_FINISH;end" >
    </WizardAction>

<!--    <WizardAction id="END_OF_SCRIPT"
        wizard:uri="intent:#Intent;action=com.android.setupwizard.EXIT;end" />-->
</WizardScript>

在 wizard_script_common_flow.xml 文件里面添加引用

<WizardAction id="user_terms_of_service"
    wizard:script="android.resource://com.xxxx.gmssampleintegrationsoverlay/raw/wizard_script_customize_flow">
</WizardAction>

注意这里的 com.xxxx.gmssampleintegrationsoverlay 需要对应上面AndroidManifest.xml package


    <!-- Set screen lock options. The action must precede the payments action [RECOMMENDED, CUSTOMIZABLE] -->
    <WizardAction id="lock_screen"
        wizard:uri="intent:#Intent;action=com.google.android.setupwizard.LOCK_SCREEN;end" >
    </WizardAction>

    <!-- MY completion [CUSTOMIZABLE] -->
    <WizardAction id="user_terms_of_service"
        wizard:script="android.resource://com.xxxx.gmssampleintegrationsoverlay/raw/wizard_script_customize_flow">
    </WizardAction>

    <!-- Labeled end of script (for branching) [RECOMMENDED, CUSTOMIZABLE] -->
    <WizardAction id="END_OF_SCRIPT" />

定义 com.android.setupwizard.USER_TERMS_OF_SERVICE

在项目的 AndroidManifest.xml


	<activity android:name=".setupwizard.SetupWFinishActivity"
            android:exported="true" >
            <intent-filter>
                <action android:name="com.android.setupwizard.USER_SETUP_FINISH" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

SetupWFinishActivity.java

package com.android.settings.setupwizard;

import android.app.Activity;
import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.WindowManager;

import com.android.settings.R;

public class SetupWFinishActivity extends Activity {
    public static final String TAG = "SetupWFinishActivity";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
        getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        getWindow().setStatusBarColor(Color.WHITE);
        getWindow().setNavigationBarColor(Color.WHITE);
        getWindow().setNavigationBarDividerColor(Color.WHITE);

        getActionBar().hide();
        setContentView(R.layout.activity_setup_wfinish);

        findViewById(R.id.button3).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //: TODO 
                onNext();
            }
        });
    }

    public void onNext() {
        int resultCode = Activity.RESULT_OK;
        Intent intent = WizardManagerHelper.getNextIntent(getIntent(), resultCode);
        Log.e(TAG, "onNext() intent:" + intent);
        try {
            startActivityForResult(intent, Activity.RESULT_OK);
        } catch (ActivityNotFoundException e) {
            Log.e(TAG, e.getMessage());
        }
        Intent returnIntent = new Intent();
        setResult(Activity.RESULT_OK,returnIntent);
        finish();
    }
}

WizardManagerHelper的实现文章来源地址https://www.toymoban.com/news/detail-801478.html

static class WizardManagerHelper {

        private static final String ACTION_NEXT = "com.android.wizard.NEXT";
        static final String EXTRA_SCRIPT_URI = "scriptUri";
        static final String EXTRA_ACTION_ID = "actionId";
        private static final String EXTRA_RESULT_CODE = "com.android.setupwizard.ResultCode";
        public static final String EXTRA_THEME = "theme";
        static final String EXTRA_WIZARD_BUNDLE = "wizardBundle";
        static final String EXTRA_IS_FIRST_RUN = "firstRun";
        static final String EXTRA_IS_DEFERRED_SETUP = "deferredSetup";
        static final String EXTRA_IS_PRE_DEFERRED_SETUP = "preDeferredSetup";
        public static final String EXTRA_IS_SETUP_FLOW = "isSetupFlow";

        public static Intent getNextIntent(Intent originalIntent, int resultCode) {
            return getNextIntent(originalIntent, resultCode, null);
        }

        public static Intent getNextIntent(Intent originalIntent, int resultCode, Intent data) {
            Intent intent = new Intent(ACTION_NEXT);
            copyWizardManagerExtras(originalIntent, intent);
            intent.putExtra(EXTRA_RESULT_CODE, resultCode);
            if (data != null && data.getExtras() != null) {
                intent.putExtras(data.getExtras());
            }
            intent.putExtra(EXTRA_THEME, originalIntent.getStringExtra(EXTRA_THEME));

            return intent;
        }

        public static void copyWizardManagerExtras(Intent srcIntent, Intent dstIntent) {
            dstIntent.putExtra(EXTRA_WIZARD_BUNDLE, srcIntent.getBundleExtra(EXTRA_WIZARD_BUNDLE));
            for (String key :
                    Arrays.asList(
                            EXTRA_IS_FIRST_RUN,
                            EXTRA_IS_DEFERRED_SETUP,
                            EXTRA_IS_PRE_DEFERRED_SETUP,
                            EXTRA_IS_SETUP_FLOW)) {
                dstIntent.putExtra(key, srcIntent.getBooleanExtra(key, false));
            }

            for (String key : Arrays.asList(EXTRA_THEME, EXTRA_SCRIPT_URI, EXTRA_ACTION_ID)) {
                dstIntent.putExtra(key, srcIntent.getStringExtra(key));
            }
        }
    }

到了这里,关于Android Google 开机向导定制 setup wizard的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 华硕主板台式电脑开机后提示:Please enter setup to recover BIOS setting.Press F1 toRun SETUP 恢复bios出厂设置方法

    台式电脑开机后突然间无法进入系统,提示:Please enter setup to recover BIOS setting.Press F1 toRun SETUP 华硕主板是很多朋友装机喜欢使用的主板,大牌做工确实不错,装机量也很大,有时我们对BIOS进行了一些设置,不过却不知道如何恢复到原来的状态,那么要怎么操作才能恢复BIOS出

    2024年02月11日
    浏览(52)
  • Win10 开机跳过桌面后台,启动自己的定制程序

    在做定制系统时,我们经常想要电脑启动仅加载自己的系统程序,而不是进入 windows 桌面环境,从而显得系统更加专业(~_~)。此时有一个简单的办法,通过修改 windows 注册表来达到目的,操作简单,使用方便。 1、打开注册表(Win键+R,在运行框里输入 regedit ,然后回车打开

    2024年02月05日
    浏览(44)
  • Mac 开机提示Google LLC 注册 无法登录进入系统

    Google LLC 会在电脑启动时提示如下弹窗,并要求登录谷歌账户进行验证 此时很明显没有用来进行验证的账号,所以需要关掉这个验证程序 从日志里面可以看到LLC启动了一个Tiny.app的程序 只需要想办法把这个程序删掉即可 关机 按住 Command + R 开机 进入 Recovery 模式 点击工具栏的

    2024年02月08日
    浏览(49)
  • 关于电脑开机一直press del to enter bios setup menu,oress F12 to display boot menu,无法开机,按del键也没有任何反应的解决办法

    错误描述:开机一直这个页面,按照提示,开机按 del、f12 键也没任何反应,无法进入BIOS,无法重新装系统。 将主机才开,查看主板上的电池是否松动,按紧重新开机,如果还是没有解决,可以尝试更好电池,可能是电池没电了。 按Del 或 F12 有反应,的话。 你好开机或者重

    2024年02月11日
    浏览(195)
  • Android的学习系列之Android Studio Setup安装

    还是项目需要,暂时搭建安卓的运行平台。 安装包 双击安装包,进入安装。 下一步 根据自己需求,安装在指定位置。 继续下一步 等待安装。 安装完成。 启动程序。 选择标准。 继续。 继续。 继续。 13.再次打开。 提示报错。 需要继续再安装。 无法安装。 提示报错。 以

    2024年02月13日
    浏览(36)
  • Android 10关机界面定制

    在项目开发过程中,需要对开机界面进行定制,使得产品界面风格统一。 软件版本:Android 10 方案供应商:高通 目的:定制关机UI 系统原始的关机UI: 定制后的关机UI: 本文定制的关机界面为长按power键触发的关机界面,首先我们先了解Android 10整理的关机流程,熟悉整理流程

    2023年04月08日
    浏览(35)
  • Android10 ROM定制导读

    本专栏出现的原因: 由于从事系统开发也有了不少的时间,但是自己研究的模块内容又比较多,仅仅自己的笔记对自己的成长和对模块的掌握无法达到熟练和精通,所以有了自己写博客整理的想法。通过写博客沉淀自己,和各位大佬互相帮助一起进步。 本专栏主要内容:

    2024年02月10日
    浏览(45)
  • Android 13 Hotseat定制化修改

            由于需求是需要自定义修改Hotseat,所以此篇文章是记录如何自定义修改hotseat的,应该可以覆盖大部分场景,修改点有修改hotseat布局方向,hotseat图标数量,hotseat图标大小,hotseat布局位置,hotseat图标禁止形成文件夹,hotseat图标禁止移动到Launcher中,下面开始一一介绍

    2024年02月13日
    浏览(32)
  • Android 11 定制系统全局监听触摸事件接口

    1.定义创建aidl接口(由于需要回调这里优先需要增加一个回调接口 ) frameworksbasecorejavaandroidappIOnTouchListener.aidl package android.app; oneway interface IOnTouchListener {      void onTouchEvent( int action); }   2.新增调用接口 在 base/core/java/android/view/IWindowManager.aidl 修改如下: import android.ap

    2023年04月08日
    浏览(51)
  • Android 13.0 rom定制专栏系列解读

    在从事android系统rom定制化的这几年里,经历了坎坎坷坷,开发过好几种类型的产品,也随着google对android系统的更新加快,也需要跟随上时代的进步,所以需要把平时工作中遇到的问题总结出来,及时做好记录归纳总结,然后进一步的提升自己能力,本专栏提供给在13.0的rom定

    2024年02月06日
    浏览(73)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包