适用于 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 } <!--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() 操作,才能查询以前存储的捆绑包的状态。