适用于 Android 的 API

适用于 Android 的 API 基于 Java。本文汇总了按 API 划分的 Citrix Endpoint Management API,并提供 API 定义。

应用程序管理:

  • isManaged
  • isWrapped

MDX 策略:

  • getPoliciesXML
  • getPolicyValue
  • setPolicyChangeMessenger

共享保管库:

  • MDXDictionary

用户数据:

  • getUserName

Class com.citrix.worx.sdk.MDXApplication

方法

  • isManaged

    public static boolean isManaged (Context context)

    检查应用程序当前是否由 MDX 托管,这意味着已在设备上安装 Citrix Secure Hub 应用程序并且已强制对应用程序实施 Citrix Endpoint Management 策略。在 Endpoint Management 后端基础结构(密钥保管库)中查询数据加密局部密钥(机密),MDX 将使用这些密钥加密应用程序文件数据。如果应用程序已托管,则返回真。

    非托管高级应用程序使用在 Applications/Citrix/MDXToolkit/data/MDXSDK_Android/default_sdk_policies.xml 中指定的默认 Endpoint Management 策略。将不为非托管的“一般”应用程序执行策略。

    参数

    context – 执行此调用的 Android 上下文。

    示例

    boolean bIsManaged = MDXApplication.isManaged(context);

  • isWrapped

    public static boolean isWrapped (Context context)

    如果应用程序是通过 MDX Toolkit 打包的,则返回真。

    参数

    context – 执行此调用的 Android 上下文。

    示例

    boolean bIsWrapped = MDXApplication.isWrapped(context);

  • getUserName

    public static String getUserName (Context context)

    返回一个字符串,其中包含正在运行 MDX 托管应用程序的已注册用户的用户名(无论该用户的登录状态如何)。如果用户未注册、应用程序不处于托管模式或者应用程序未打包,则返回 nil。

    参数

    context – 执行此调用的 Android 上下文。

    示例

    String userName = MDXApplication.getUserName(context);

Class com.citrix.worx.sdk.MDXPolicies

方法

  • getPoliciesXML

    public static String getPoliciesXML (Context context)

    返回 default_sdk_policies.xml 的内容,每个策略一行,前缀为 (match),以指示 XML 文件中的值与 MDXPolicies.getPolicyValue() 返回的值相匹配。在失败时返回一个空字符串。

    参数

    context – 执行此调用的 Android 上下文。

    示例

    String policiesXML = MDXPolicies.getPoliciesXML(context);

  • getPolicyValue

    public static String getPolicyValue (Context context, String policyName)

    返回一个包含命名策略的当前值的字符串。如果找不到值,则返回 null

    参数

    context – 执行此调用的 Android 上下文。

    policyName – 要搜索的策略的名称。策略名称是策略 XML 文件中 PolicyName 元素的值。

    示例

    String value = MDXPolicies.getPolicyValue(context"DisableCamera");

  • setPolicyChangeMessenger

    public static String setPolicyChangeMessenger (Context context, String policyName. Messenger messenger)

    注册一个 Messenger,以便在给定策略的值发生更改时接收消息。当 MDX 检测到 Citrix Endpoint Management 控制台中某个策略值发生更改时,MDX 将向该 Messenger 发出通知。然后,可以使用其他 API 来重新读取策略值,以及更改应用程序。返回 null

    参数

    context – 执行此调用的 Android 上下文。

    policyName – 要监视的策略名称。策略名称是策略 XML 文件中 PolicyName 元素的值。

    messenger – 将在策略值发生更改时接收消息的 Messenger。

    示例

    MDXPolicies.setPolicyChangeMessenger(context, "DisableCamera", messenger);

Class com.citrix.mdx.common.MDXDictionary

MDXDictionary 是一个用于读取和存储已加密的 Android“键-值”对捆绑包的容器。同一个 MDX 安全组中的移动生产力应用程序共享一个字典。使用共享保管库 API 在具有相同 MDX 字典的应用程序之间共享托管内容。例如,可以通过已注册的应用程序共享证书和私钥,以便应用程序可以从安全的保管库而不是从 Secure Hub 获取证书。

无论私密文件加密策略和公用文件加密策略设置如何,字典都会被加密存储。在检索字典之前,开发者必须解锁保管库。

构造函数

  • public MDXDictionary( MDXDictionary source )

    构造现有 MDXDictionary 的副本。

    参数

    source - 应复制的 MDXDictionary。

  • public MDXDictionary( String name, Bundle bundle, long sequence )

    通过名称、捆绑包和序列号构造 MDXDictionary。如果不知道序列号,则使用 create() factory 方法。

    参数

    name - 字典的名称。

    bundle - Android 捆绑包。

    sequence - 序列号。

方法

  • public static MDXDictionary create( Context context, String name )

    在要创建字典时,首先检查是否已经存在同名的字典。如果不存在,则返回一个新字典。否则,返回现有字典。此方法从不返回 null

    参数

    context – 执行此调用的 Android 上下文。

    name - 字典的名称。

    示例

    // 创建字典的一个实例。

    MDXDictionary dict = MDXDictionary.create(getContext(), "app-settings");

  • public static boolean delete( Context context, String name )

    删除字典的名称。在成功时返回 true;失败时返回 false

    参数

    context – 执行此调用的 Android 上下文。

    name - 字典的名称。

    示例

    // 创建字典的一个实例。

    MDXDictionary.delete(getContext(), "app-settings");

  • public static MDXDictionary find( Context context, String name )

    查找现有的字典。返回一个现有字典;如果找不到字典,则返回 null

    参数

    context – 执行此调用的 Android 上下文。

    name - 字典的名称。

    示例

    MDXDictionary dict = MDXDictionary.find(getContext(),"app-settings");

     if( dict != null )
         {
             // Use dictionary
         }
    
  • public boolean isNew( )

    检查这是一个新字典还是现有字典。如果字典不存在,则返回 true

    示例

    MDXDictionary dict = MDXDictionary.create(getContext(), "app-settings");

     if (dict.isNew())
         {
             // Dictionary was not found.
         }
     else
         {
             // Existing dictionary was found.
         }
    
  • public boolean save( Context context )

    存储已加密的字典。如果已存在同名字典,则将覆盖此字典。在成功时返回 true;失败时返回 false

    参数

    context – 执行此调用的 Android 上下文。

    示例

    MDXDictionary dict = MDXDictionary.find(getContext(), "app-settings");

     if( dict != null )
         {
             String certificate = getCertificate();
             dict.bundle.putString( "secret-certificate", certificate );
             // Update bundle by overwriting the existing bundle.
             dict.save( getContext() );
         }
    
  • public boolean append( Context context )

    向现有字典附加一个加密字典。如果不存在任何字典,则存储已指定的字典。在成功时返回 true;失败时返回 false

    参数

    context – 执行此调用的 Android 上下文。

    示例

    MDXDictionary dict = MDXDictionary.find(getContext(), ";app-settings");

     if( dict != null )
         {
             String certificate = getCertificate();
             Bundle bundle = new Bundle();
             bundle.putString( "secret-certificate", certificate );
             dict.bundle = bundle;
             dict.append( getContext() );
             // Note that dict.bundle may not match the state of the
             // bundle that was stored. The stored bundle could be
             // larger.
         }
    
  • public boolean delete( Context context )

    删除字典。在成功时返回 true;失败时返回 false

    参数

    context – 执行此调用的 Android 上下文。

    示例

    MDXDictionary dict = MDXDictionary.find(getContext(), "app-settings");

     if( dict != null )
         {
             dict.delete( getContext() );
         }
    

备注和注意事项

  • 当传入错误的参数时,构造函数将引发 IllegalArgumentException
  • create() 操作将始终不会返回 null。如果已启用加密策略,则用户需确保在调用 create() 之前解锁加密策略。
  • 如果已存储的可解析或序列化的对象不是已知的 Java 或 Android 数据类型,则 append() 操作可能会失败。Secure Hub 无法解编字典,因为 Secure Hub 无法在内部识别类。
  • append() 操作会将其捆绑包附加到现有字典捆绑包。如果已存储的捆绑包与字典中的捆绑包不同,则本地捆绑包将不反映已存储的捆绑包的状态。必须执行 find() 操作或 create() 操作,才能查询以前存储的捆绑包的状态。