安卓托管配置提供者

4
“设置托管配置”页面的概述部分说明如下:
应用程序定义了可以由管理员远程设置的托管配置选项。这些是任意的设置,可以由托管配置提供者更改。 [...] 托管配置提供者是在同一设备上运行的另一个应用程序。
然后页面描述了如何设置托管应用程序,但没有关于“托管配置提供程序应用程序”的进一步信息-如果我理解正确,该应用程序负责在配置更改时发送ACTION_APPLICATION_RESTRICTIONS_CHANGED。
我的问题是这种“提供程序应用程序”是什么类型的应用程序?是否有Android API应该实现此应用程序以充当配置提供程序?这个伴随应用程序如何将配置更改挂钩到RestrictionsManager中,以便托管应用程序能够检索它们?
我之所以在这里提问,是因为我在Android文档中没有找到任何参考资料。

ACTION_APPLICATION_RESTRICTIONS_CHANGED是一种受保护的意图,只能由系统发送。它不会被“管理配置提供程序”发送。 - Steve Miskovetz
1个回答

3
这个“提供者应用”是什么应用?配置提供者应用是在设备上运行的另一个应用程序,通常由管理员控制。管理员将配置更改传达给提供者应用程序,然后该应用程序会进一步更改托管应用程序的配置。您可以查看BasicManagedProfile示例:https://github.com/googlesamples/android-BasicManagedProfile,这就是这种应用程序的典型案例。
这个应用程序需要实现一些Android API才能作为配置提供者,它需要请求进行托管配置文件:
Intent intent = new Intent(ACTION_PROVISION_MANAGED_PROFILE);
intent.putExtra(EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME,
                        activity.getApplicationContext().getPackageName());
if (intent.resolveActivity(activity.getPackageManager()) != null) {
    startActivityForResult(intent, REQUEST_PROVISION_MANAGED_PROFILE);
    activity.finish();
} else {
    Toast.makeText(activity, "Device provisioning is not enabled. Stopping.",
                                                  Toast.LENGTH_SHORT).show();
}

这个伴侣应用是如何将配置更改挂钩到RestrictionsManager中的,以便被管理的应用程序能够检索它们呢?它使用DevicePolicyManager来强制执行对被管理应用程序的限制。
DevicePolicyManager manager = (DevicePolicyManager) getActivity().getSystemService(Context.DEVICE_POLICY_SERVICE);

Bundle settings = new Bundle();
settings.putBoolean("downloadOnCellular", true);

manager.setApplicationRestrictions(
        BasicDeviceAdminReceiver.getComponentName(getActivity()),
        PACKAGE_NAME_MANAGED_APP, settings);

再次看一下在样例项目中如何实现这一点。

1
这个“配置提供程序应用”可以作为MDM吗?如果可以,例如我正在使用Microsoft Intune,如何从Intune向应用推送应用程序配置? - anuragal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接