文章目录
Android managed configurations(设置受管理的配置)
如果您正在针对企业市场开发应用,则可能需要满足组织政策设置的特定要求。 托管配置(以前称为“应用限制”)允许组织的 IT 管理员远程为应用指定设置。此功能对于部署到工作资料的经组织批准的应用来说特别有用。
例如,组织可能会要求获得批准的应用允许 IT 管理员执行以下操作:
- 允许或屏蔽网络浏览器的网址
- 配置是允许应用通过移动网络同步内容,还是仅允许通过 Wi-Fi 同步内容
- 配置应用的电子邮件设置
本指南介绍了如何在您的应用中实现托管配置设置。如需查看采用托管配置的示例应用,请参阅 ManagedConfigurations。 如果您是企业移动管理 (EMM) 开发者,请参阅 Android Management API 指南。
注意:由于历史原因,这些配置设置称为“限制”,并通过使用此术语的文件和类(如 RestrictionsManager
)来实现。但是,这些限制实际上可以实现各种配置选项,而不仅仅是对应用功能的限制。
远程配置概览
应用定义可由 IT 管理员远程设置的托管配置选项。这些是由托管配置提供方更改的任意设置。如果您的应用在工作资料中运行,IT 管理员可以更改应用的托管配置。
托管配置提供程序是同一设备上运行的另一个应用。 此应用通常由 IT 管理员控制。IT 管理员将配置更改传达给托管配置提供程序应用。该应用反过来会更改您应用的配置。
如需提供由外部管理的配置,请执行以下操作:
- 在应用清单中声明托管配置。这样,IT 管理员就可以通过 Google Play API 读取应用的配置。
- 每当应用恢复运行时,都请使用
RestrictionsManager
对象检查当前的托管配置,并更改应用的界面和行为以符合这些配置。 - 监听
ACTION_APPLICATION_RESTRICTIONS_CHANGED
intent。收到此广播时,请检查RestrictionsManager
以查看当前的托管配置,并对应用的行为进行必要的更改。
定义托管配置
您的应用可以支持您要定义的任何托管配置。您可以在托管配置文件中声明应用的托管配置,并在清单中声明该配置文件。创建配置文件可让其他应用检查您的应用提供的托管配置。EMM 合作伙伴可以使用 Google Play API 读取您的应用配置。
如需定义应用的远程配置选项,请将以下元素放入清单的 `` 元素中:
<meta-data android:name="android.content.APP_RESTRICTIONS"
android:resource="@xml/app_restrictions" />
在应用的 res/xml
目录中创建一个名为 app_restrictions.xml
的文件。RestrictionsManager
的参考文档中介绍了该文件的结构。该文件具有一个顶级 <restrictions>
元素,该元素针对应用具有的每个配置选项包含一个 <restriction>
子元素。
注意:请勿创建托管配置文件的本地化版本。应用只能有一个托管配置文件,因此应用在所有语言区域的配置将保持一致。
在企业环境中,EMM 通常使用托管配置架构为 IT 管理员生成远程控制台,以便管理员可以远程配置您的应用。
托管配置提供程序可以查询应用,以查找有关应用可用配置的详细信息,包括其说明文本。配置提供程序和 IT 管理员可以随时更改应用的托管配置,即使应用未运行也可以。
例如,假设您的应用可以远程配置为允许或禁止其通过移动网络连接下载数据。您的应用可以包含如下所示的 <restriction>
元素:
<?xml version="1.0" encoding="utf-8"?>
<restrictions xmlns:android="http://schemas.android.com/apk/res/android">
<restriction
android:key="downloadOnCellular"
android:title="@string/download_on_cell_title"
android:restrictionType="bool"
android:description="@string/download_on_cell_description"
android:defaultValue="true" />
</restrictions>
您可以使用每个配置的 android:key
属性从托管配置软件包中读取其值。因此,每个配置都必须具有唯一的键字符串,并且无法本地化该字符串。必须使用字符串字面量指定。
注意:在正式版应用中,android:title
和 android:description
应从本地化的资源文件中提取,如使用资源进行本地化中所述。
应用使用 bundle_array
中的捆绑包定义限制。例如,具有多个 VPN 连接选项的应用可以在 bundle
中定义每个 VPN 服务器配置,并将多个捆绑包归入一个捆绑包数组:
<?xml version="1.0" encoding="utf-8"?>
<restrictions xmlns:android="http://schemas.android.com/apk/res/android" >
<restriction
android:key="vpn_configuration_list"
android:restrictionType="bundle_array">
<restriction
android:key="vpn_configuration"
android:restrictionType="bundle">
<restriction
android:key="vpn_server"
android:restrictionType