Android托管配置提供商

时间:2017-01-17 14:23:29

标签: android android-for-work android-enterprise

设置托管配置页面的overview部分说明了以下内容:

  

应用程序定义可远程设置的托管配置选项   由管理员。这些是可以更改的任意设置   由托管配置提供商提供   [...]
  托管配置提供程序是在同一设备上运行的另一个应用程序。

然后该页面介绍了如何设置托管应用,但是没有关于以下内容的更多信息:"托管配置提供商应用" - 如果我理解正确,应用程序负责在配置更改时发送ACTION_APPLICATION_RESTRICTIONS_CHANGED

我的问题是这个"提供商应用程序是什么类型的应用程序?这个应用程序是否应该实现任何Android API才能充当配置提供程序?此配套应用如何将配置更改挂钩到RestrictionsManager,以便托管应用能够检索它们?

我在这里问这个,因为遗憾的是我没有在Android文档中找到任何参考。

1 个答案:

答案 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);

再次,看看如何在示例项目中完成此操作。