适用于 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( "secret-certificate", 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( "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. } <!--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() 操作来查询先前存储的捆绑包的状态。