如何为设备所有者配置自定义Android Google安装向导?

时间:2018-01-16 19:43:18

标签: java android

- 使用案例:

在priv-app文件夹中的

1-System app apk将用作设备所有者。

2 - 用户启动设备并启动Google安装向导。

3 - 立即启动设备配置活动。

- 以前的工作:

此方法过去使用动作意图在Android 6.0 Marshmallow上运行:

<activity android:theme="@style/InvisibleNoTitle" android:name="OwnerActivity" android:launchMode="singleTop" android:immersive="true">
    <intent-filter android:priority="5">
        <action android:name="android.intent.action.MAIN" />
        <action android:name="android.intent.action.DEVICE_INITIALIZATION_WIZARD" />
        <category android:name="android.intent.category.HOME" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

没有任何问题。

更新到Android 8.1 Oreo后,此方法不再有效。 OwnerActivity仅在设置向导完成后显示,这是无用的,因为设备已由用户配置,无法再次提供。

有没有更新的方式这样做,以便我的OwnerActivity首先显示配置设备?奥利奥有什么变化?

1 个答案:

答案 0 :(得分:2)

要回答这个问题有点晚了,而且在不与Google交谈的情况下,很难知道设计决定是什么。但是,我们知道的是发生了什么变化。 1. android.intent.action.DEVICE_INITIALIZATION_WIZARD至少在Oreo之前就已被弃用。 2.软件包管理器服务进行了更改,以引用安装向导。新方法似乎是清单清单定义所缺少的类别android.intent.category.SETUP_WIZARD

阅读有关代码的注释(您可以在下面找到),我们看到以下日志:

            Slog.e(TAG, "There should probably be exactly one setup wizard; found " + matches.size()
                + ": matches=" + matches);

https://android.googlesource.com/platform/frameworks/base/+/nougat-mr2.3-release/services/core/java/com/android/server/pm/PackageManagerService.java#17872

所以从Nougat开始,Android似乎不支持将多个设置向导链接在一起。 对于您如何设置设备管理员的特定问题,我有2条建议。

  1. 如果您关心CDD和CTS,则应该让您的用户经历Google设备所有者的配置过程,并不断对其进行更新。
  2. 如果您不关心它,而只希望构建始终具有设备所有者,则只需在框架中进行更改或添加一些始终在安装向导之前运行的系统二进制文件即可将设备所有者应用程序设置为你。