设置托管配置页面的overview部分说明了以下内容:
应用程序定义可远程设置的托管配置选项 由管理员。这些是可以更改的任意设置 由托管配置提供商提供 [...]
托管配置提供程序是在同一设备上运行的另一个应用程序。
然后该页面介绍了如何设置托管应用,但是没有关于以下内容的更多信息:"托管配置提供商应用" - 如果我理解正确,应用程序负责在配置更改时发送ACTION_APPLICATION_RESTRICTIONS_CHANGED
。
我的问题是这个"提供商应用程序是什么类型的应用程序?这个应用程序是否应该实现任何Android API才能充当配置提供程序?此配套应用如何将配置更改挂钩到RestrictionsManager
,以便托管应用能够检索它们?
我在这里问这个,因为遗憾的是我没有在Android文档中找到任何参考。
答案 0 :(得分:2)
这个"提供商应用程序"是什么类型的应用程序?
配置提供商应用是设备上运行的另一个应用。此应用通常由管理员控制。管理员将配置更改传达给提供者应用程序,然后此应用程序会更改托管应用程序上的配置。
查看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);
再次,看看如何在示例项目中完成此操作。