适用于 Android 的 API

适用于 Android 的 API 基于 Java。本文按功能总结了 Citrix Endpoint Management™ API,并提供了 API 定义。

  • 应用程序管理:

  • isManaged
  • isWrapped

MDX 策略:

  • getPoliciesXML
  • getPolicyValue
  • setPolicyChangeMessenger

  • 共享保管库:

  • MDXDictionary

用户数据:

  • getUserName

  • 类 com.citrix.worx.sdk.MDXApplication

方法

  • isManaged

    public static boolean isManaged (Context context)

    检查应用程序当前是否由 MDX 管理,这意味着设备上已安装 Citrix Secure Hub™ 应用程序,并且 Citrix Endpoint Management 策略已在您的应用程序上强制执行。Endpoint Management 后端基础架构(密钥保管库)会查询数据加密部分密钥(机密),MDX 将使用这些密钥加密应用程序文件数据。如果应用程序受管理,则返回 true。

    未受管理的 Premium 应用程序使用 Applications/Citrix/MDXToolkit/data/MDXSDK_Android/default_sdk_policies.xml 中指定的 Endpoint Management 策略默认值。对于未受管理的 General 应用程序,不强制执行策略。

    参数

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

  • 示例

    boolean bIsManaged = MDXApplication.isManaged(context);

  • isWrapped

    public static boolean isWrapped (Context context)

    如果应用程序使用 MDX Toolkit 进行了包装,则返回 true。

    参数

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

    示例

    boolean bIsWrapped = MDXApplication.isWrapped(context);

  • getUserName

    public static String getUserName (Context context)

    返回一个字符串,其中包含运行 MDX 管理的应用程序的已注册用户的用户名,无论用户登录状态如何。如果用户未注册、应用程序未受管理或应用程序未包装,则返回 nil。

    参数

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

  • 示例

    String userName = MDXApplication.getUserName(context);

  • 类 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)

    返回一个 String,其中包含指定策略的当前值。如果未找到任何值,则返回 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);

类 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() 工厂方法。

    参数

    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
         }
     <!--NeedCopy-->
    
  • public boolean isNew( )

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

    示例

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

     if (dict.isNew())
         {
             // Dictionary was not found.
         }
     else
         {
             // Existing dictionary was found.
         }
     <!--NeedCopy-->
    
  • 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( &quot;secret-certificate&quot;, certificate );
             // Update bundle by overwriting the existing bundle.
             dict.save( getContext() );
         }
     <!--NeedCopy-->
    
  • 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( &quot;secret-certificate&quot;, 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.
         }
     <!--NeedCopy-->
    
  • public boolean delete( Context context )

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

    参数

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

    示例

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

     if( dict != null )
         {
             dict.delete( getContext() );
         }
     <!--NeedCopy-->
    

注意事项

  • 构造函数在传入无效参数时将抛出 IllegalArgumentException
  • create() 操作永远不会返回 null。如果启用了加密策略,用户有责任确保在调用 create() 之前将其解锁。
  • 如果可解析或可序列化的存储对象不是已知的 Java 或 Android 数据类型,则 append() 操作可能会失败。Secure Hub 无法解组该字典,因为 Secure Hub 内部不识别该类。
  • append() 操作会将其捆绑包附加到现有字典捆绑包中。如果存储的捆绑包与字典中的捆绑包不同,则本地捆绑包将不会反映存储的捆绑包的状态。需要执行 find() 操作或 create() 操作来查询先前存储的捆绑包的状态。
适用于 Android 的 API