典型的管理任务

EMM 可以在其 Android 企业解决方案中执行一系列典型的管理任务,例如本指南中显示的任务。示例代码使用适用于 Java 的 Google Play EMM API 客户端库®。

查找用户并获取用户详细信息

许多 Google Play EMM API 都需要 userId(以及 enterpriseId)来执行一些与用户相关的任务,例如安装应用、获取使用权和许可。某些调用需要用户对象。

如果组织使用 Google Play 企业版账号,您需要维护用户电子邮件地址与这些账号的用户 ID 之间的对应关系。通过 Google 账号,您将使用 UsersListResponse

查找用户

此代码示例可获取与 Google 账号相关联的用户 ID。而不适用于使用 Google Play 企业版账号的组织。

此示例假定您已将 UserUsersListResponse 模型导入您的代码中。如需获取特定的用户账号,请将 enterpriseId 和电子邮件地址传递给 UsersListResponse,以获取其 userId

public UsersListResponse list(String enterpriseId, String email) throws
   IOException {
    return androidEnterprise
        .users()
        .list(enterpriseId, email)
        .execute();
}

获取用户详细信息

获取 userId 后,您可以检索其他详细信息。请参阅 Users.Get

public User get(String enterpriseId, String userId) throws IOException {
    return androidEnterprise
        .users()
        .get(enterpriseId, userId)
        .execute();
}

授予用户对应用的访问权限

您可以使用 Google Play EMM API 控制用户可以访问哪些应用 。对某个应用的访问权限包括以下权限: 搜索、查看、安装和更新应用。您可以通过三种不同的访问权限 级别:

  • 仅限允许的应用:用户只能访问特定应用。
  • 所有已批准的应用:用户可以使用所有已获批准的应用 企业。
  • 所有应用:用户可以访问全部公开发布的应用 在 Google Play 商店中购买

仅授予用户对特定应用的访问权限

以下示例展示了如何授予用户对一组特定应用的访问权限 。该流程包括 操作步骤:

  • 收集批准用于用户 (productSet) 的 productIds(应用)列表。
  • 通过将 productSetBehavior 字符串的值设置为 "whitelist",指定用户只能访问给定列表中的应用。
  • 使用 setAvailableProductSetproductIds 列表和行为设置应用于用户的可用商品集。
public ProductSet setProductSet(String enterpriseId, String userId,
    List<String> productIds) throws IOException {
  ProductSet productSet = new ProductSet();
  productSet.setProductId(productIds);
  productSet.setProductSetBehavior("whitelist");

  return androidEnterprise
      .users()
      .setAvailableProductSet(enterpriseId, userId, productSet)
      .execute();
}

授权用户访问所有已批准的应用

以下示例展示了如何向用户授予任何已获批准的应用的访问权限 企业用户所需的资源该流程包括 操作步骤:

  • 通过将 productSetBehavior 字符串的值设置为 "allApproved",指定用户可以访问已批准用于企业的所有应用。
  • 使用 setAvailableProductSet 将此设置应用于用户。
public ProductSet setUserIncludeApprovedApps(String enterpriseId, String userId)
    throws IOException {
  ProductSet productSet = new ProductSet();
  productSet.setProductSetBehavior("allApproved");

  return androidEnterprise
      .users()
      .setAvailableProductSet(enterpriseId, userId, productSet)
      .execute();
}

注意:当 productSetBehavior 设置为 "allApproved" 时, 则无需为 productSet 指定任何 productIds

授予用户对所有应用的访问权限

以下示例展示了如何在受管理的 Google Play 商店可以访问公开 Google Play 商店中的任何应用。 有权访问所有应用的用户仍然只能看到自己应用的商店布局。 打开 Google Play 企业版,但可以找到其他应用 。

某些受信任的用户(例如 IT 管理员)可能要求使用这种级别更高的 先测试和评估应用的权限,然后再为企业批准应用。通过 向用户授予所有应用访问权限的流程包括以下步骤:

  • 通过将 productSetBehavior 字符串的值设置为 "includeAll",指定用户可以访问 Google Play 商店中的所有应用。
  • 使用 setAvailableProductSet 将此设置应用于用户。
public ProductSet setUserIncludeAllApps(String enterpriseId, String userId)
    throws IOException {
  ProductSet productSet = new ProductSet();
  productSet.setProductSetBehavior("includeAll");

  return androidEnterprise
      .users()
      .setAvailableProductSet(enterpriseId, userId, productSet)
      .execute();
}

注意:当 productSetBehavior 设置为 "includeAll" 时, 则无需为 productSet 指定任何 productIds

创建商店布局

向用户授予应用访问权限后,请将应用分组,以便在 Google Play 企业版商店前端显示。

您可以使用 Storelayoutpages Storelayoutclusters API 为每位客户创建独特的自定义商店布局。典型布局由一组页面组成,每个页面可以包含应用集群。您可以将相关应用放入同一个集群中。有关详情和示例代码,请参阅创建自定义商店布局

获取应用的权限

要将应用添加到自定义商店布局中(或在用户 并显示相应应用以便用户能够选择,则管理员必须 接受整个组织对该应用程序的权限。管理员可以 在受管理的应用中接受应用权限并将应用标记为已获准分发 Google Play 管理中心(请参阅 Google Play 企业版概览)。

根据最佳做法,我们建议您将权限 iframe 嵌入到 EMM 控制台。这意味着用户不必另行导航到 Google Play 企业版管理中心。使用 Products.getApprovalUrl 获取 iframe 的网址。

public String getApprovalUrl(String enterpriseId, String productId)
    throws IOException {
  return androidEnterprise
      .products()
      .generateApprovalUrl(enterpriseId, productId)
      .execute()
      .getUrl();
}

请使用 Products.approve 接受这些权限。

public void approveProduct(String enterpriseId,
    String productId,
    String approvalUrl) throws IOException {
  ProductsApproveRequest productsApproveRequest =
      new ProductsApproveRequest()
          .setApprovalUrlInfo(
              new ApprovalUrlInfo().setApprovalUrl(approvalUrl));
  androidEnterprise
      .products()
      .approve(enterpriseId, productId, productsApproveRequest)
      .execute();
  }

获取用户的设备

如需执行特定于设备的操作,您需要标识与 用户。此示例使用 DevicesListResponse 返回给定 userID 的设备列表。

public DevicesListResponse list(String enterpriseId, String userId) throws
   IOException {

    return androidEnterprise
        .devices()
        .list(enterpriseId, userId)
        .execute();
}

如果用户在尝试访问时已同意显示的服务条款 Google Play 企业版首次在响应中包含非受管设备 (管理类型为 unmanagedProfile 的设备)。

获取和设置设备状态

此管理任务仅适用于使用 Google 账号的组织。它 不适用于使用 Google Play 企业版账号的组织。

当用户在受管理的设备上激活受管理的 Google 账号后,访问 是否启用(或停用)对 Google 服务的访问权限:

如果已停用 EMM 强制执行功能,系统会忽略设备状态,并将账号设为 只要在 Android 设备上激活 Google 服务,就可以访问相应服务。 如果已启用 EMM 强制执行,但设备的状态未启用,则用户无法安装 Google Play 和 Google Play EMM API 均无法以静默方式安装 创建该用户的应用

以下示例展示了如何获取给定设备的状态(通过传递 enterpriseIduserIddeviceId)。

getState()setState() 运算适用于 managementType 为 仅限 managedDevicemanagedProfile(针对 Devices 资源)。符合以下条件的设备: 无法通过这些 API 控制 managementTypeunmanagedProfile

public DeviceState getState(String enterpriseId, String userId, String
   deviceId) throws IOException {

    return androidEnterprise
        .devices()
        .getState(enterpriseId, userId, deviceId)
        .execute();
}

通过设置 AccountState 字符串更改为相应的常量。

public DeviceState setState(String enterpriseId, String userId, String
   deviceId, String accountState) throws IOException {

    DeviceState deviceState = new DeviceState();
    deviceState.setAccountState(accountState);

    return androidEnterprise
        .devices()
        .setState(enterpriseId, userId, deviceId, deviceState)
        .execute();
}

在设备上推送安装应用

管理员可以静默安装应用。不需要用户互动。 此示例使用 Installs.Update 以静默方式安装应用(由 productId 标识) 设备(由 deviceId 标识)。

public Install update(String enterpriseId, String userId, String
   deviceId, String productId) throws IOException {

    return androidEnterprise
        .installs()
        .update(enterpriseId, userId, deviceId, productId,
           new Install())
        .execute();
}

如果设备上已存在该应用,并且有更新版本可用,那么该应用会更新到新版本。

搜索并获取已批准的应用列表中的应用

管理员可以创建和管理可在 Google Play 企业版中供用户使用且已获批准的应用的列表。如果用户使用自带工作资料的设备,以及使用由公司管理的设备(整个设备均由单位管理)的用户,则只能下载此已批准列表中的应用。

您可以自定义 EMM 控制台,在其中添加搜索框,以便管理员仅在已批准的应用列表中搜索应用。搜索功能接受的参数与标准的 Google Play 企业版搜索功能相同,但它只会搜索已批准的应用列表中的应用。

例如,如果管理员想将已批准的应用列表中的某个应用推送到其企业的设备,则可以使用 EMM 控制台中的这一搜索功能查找该应用。

在查询中,您可以指定结果中应包含的商品数量上限(例如 setMaxResults(10L)),刚好足以填充整个屏幕。默认值为 100,这也是一次可返回的最大值。如果结果包含分页令牌,您可以通过传递分页令牌来检索更多结果。

以下示例展示了如何获取办公应用搜索的前 10 条结果。 请参阅 Products.List

public List searchProducts(String enterpriseId) throws IOException {
  ProductsListResponse executeResult =
      androidEnterprise
          .products()
          .list(enterpriseId)
          .setMaxResults(10L)
          .setQuery("productivity")
          .execute();
  return executeResult.getProduct();
}

如果搜索结果包含分页令牌,则搜索生成超过 setMaxResults 条结果,在本例中超过 10 条。要检索更多结果,请重新执行搜索并在请求中添加分页令牌。此示例将获取后 10 个结果。

public ProductsListResponse continueSearch(
    String enterpriseId, ProductsListResponse previousResponse) throws IOException {
  ProductsListResponse nextResults =
      androidEnterprise
          .products()
          .list(enterpriseId)
          .setMaxResults(10L)
          .setToken(previousResponse.getTokenPagination().getNextPageToken())
          .setQuery("productivity")
          .execute();
  return nextResults;
}