API para Android
La API para Android se basa en Java. Este artículo resume las API de Citrix Endpoint Management™ por característica y proporciona las definiciones de la API.
-
Administración de aplicaciones:
- isManaged
- isWrapped
Políticas MDX:
- getPoliciesXML
- getPolicyValue
-
setPolicyChangeMessenger
-
Bóveda compartida:
- MDXDictionary
Datos de usuario:
-
getUserName
-
Clase com.citrix.worx.sdk.MDXApplication
Métodos
-
isManaged
public static boolean isManaged (Context context)
Comprueba si la aplicación está actualmente administrada por MDX, lo que significa que la aplicación Citrix Secure Hub™ está instalada en el dispositivo y las políticas de Citrix Endpoint Management se aplican a tu aplicación. La infraestructura de backend de Endpoint Management (bóvedas de claves) se consulta para obtener claves parciales de cifrado de datos (secretos) que MDX usará para cifrar los datos de archivos de la aplicación. Devuelve “true” si la aplicación está administrada.
Las aplicaciones Premium no administradas usan los valores predeterminados de la política de Endpoint Management especificados en Applications/Citrix/MDXToolkit/data/MDXSDK_Android/default_sdk_policies.xml. Las políticas no se aplican a las aplicaciones generales no administradas.
Parámetros
context – El contexto de Android que realiza esta llamada.
-
Ejemplo
boolean bIsManaged = MDXApplication.isManaged(context); -
isWrapped
public static boolean isWrapped (Context context)
Devuelve “true” si la aplicación está encapsulada con MDX Toolkit.
Parámetros
context – El contexto de Android que realiza esta llamada.
Ejemplo
boolean bIsWrapped = MDXApplication.isWrapped(context); -
getUserName
public static String getUserName (Context context)
Devuelve una cadena que contiene el nombre de usuario de un usuario inscrito que ejecuta una aplicación administrada por MDX, independientemente del estado de inicio de sesión del usuario. Devuelve “nil” si el usuario no está inscrito, la aplicación no está administrada o la aplicación no está encapsulada.
Parámetros
context – El contexto de Android que realiza esta llamada.
-
Ejemplo
String userName = MDXApplication.getUserName(context); -
Clase com.citrix.worx.sdk.MDXPolicies
Métodos
-
getPoliciesXML
public static String getPoliciesXML (Context context)
Devuelve el contenido de default_sdk_policies.xml, como una línea por política, con el prefijo “(match)” para indicar que el valor del archivo XML coincide con el valor devuelto por MDXPolicies.getPolicyValue(). Devuelve una cadena vacía si falla.
Parámetros
context – El contexto de Android que realiza esta llamada.
Ejemplo
String policiesXML = MDXPolicies.getPoliciesXML(context); -
getPolicyValue
public static String getPolicyValue (Context context, String policyName)
Devuelve una cadena (String) que contiene el valor actual de la política con nombre. Devuelve “null” si no se encuentra ningún valor.
Parámetros
context – El contexto de Android que realiza esta llamada.
policyName – El nombre de la política que buscar. Un nombre de política es el valor del elemento PolicyName en un archivo XML de política.
Ejemplo
String value = MDXPolicies.getPolicyValue(context"DisableCamera"); -
setPolicyChangeMessenger
-
public static String setPolicyChangeMessenger (Context context, String policyName. Messenger messenger)
Registra un Messenger para recibir un mensaje cuando cambia el valor de la política dada. Cuando MDX detecta que un valor de política ha cambiado en la consola de Citrix Endpoint Management, MDX notifica a este messenger. Luego puedes usar las otras API para volver a leer los valores de la política y cambiar tu aplicación. Devuelve “null”.
Parámetros
context – El contexto de Android que realiza esta llamada.
policyName – El nombre de la política que supervisar. Un nombre de política es el valor del elemento PolicyName en un archivo XML de política.
messenger – El messenger que recibirá mensajes cuando cambie el valor de la política.
Ejemplo
-
MDXPolicies.setPolicyChangeMessenger(context, "DisableCamera", messenger);
Clase com.citrix.mdx.common.MDXDictionary
MDXDictionary es un contenedor para leer y almacenar paquetes de Android cifrados de pares clave-valor. Las aplicaciones de productividad móvil del mismo grupo de seguridad MDX comparten un diccionario. Usa la API de bóveda compartida para compartir contenido administrado entre aplicaciones que tienen el mismo diccionario MDX. Por ejemplo, puedes compartir certificados y claves privadas a través de una aplicación inscrita para que las aplicaciones puedan obtener un certificado de la bóveda segura en lugar de Secure Hub.
Los diccionarios se almacenan cifrados independientemente de la configuración de las políticas de cifrado de archivos privados y de cifrado de archivos públicos. Los desarrolladores deben desbloquear la bóveda antes de recuperar los diccionarios.
Constructores
-
public MDXDictionary( MDXDictionary source )
Construye una copia de un MDXDictionary existente.
Parámetros
source – El MDXDictionary que se debe copiar.
-
public MDXDictionary( String name, Bundle bundle, long sequence )
Construye un MDXDictionary a partir de un nombre, un paquete y un número de secuencia. Si no conoces el número de secuencia, usa el método de fábrica create().
Parámetros
name – El nombre del diccionario.
bundle – El paquete de Android.
sequence – Un número de secuencia.
Métodos
-
public static MDXDictionary create( Context context, String name )
-
Crea un diccionario comprobando primero si ya existe un diccionario con el mismo nombre. Si el diccionario no existe, se devuelve un nuevo diccionario. De lo contrario, se devuelve el diccionario existente. Este método nunca devuelve “null”.
Parámetros
context – El contexto de Android que realiza esta llamada.
name – El nombre del diccionario.
Ejemplo
// Crea una instancia de un diccionario.
MDXDictionary dict = MDXDictionary.create(getContext(), "app-settings"); -
public static boolean delete( Context context, String name )
-
Elimina un diccionario por nombre. Devuelve “true” si tiene éxito; devuelve “false” si falla.
Parámetros
context – El contexto de Android que realiza esta llamada.
name – El nombre del diccionario.
Ejemplo
// Crea una instancia de un diccionario.
MDXDictionary.delete(getContext(), "app-settings"); -
public static MDXDictionary find( Context context, String name )
Busca un diccionario existente. Devuelve un diccionario existente; devuelve “null” si no se encuentra ningún diccionario.
Parámetros
context – El contexto de Android que realiza esta llamada.
name – El nombre del diccionario.
Ejemplo
MDXDictionary dict = MDXDictionary.find(getContext(),"app-settings");if( dict != null ) { // Use dictionary } <!--NeedCopy--> -
public boolean isNew( )
Comprueba si este es un diccionario nuevo o uno existente. Devuelve “true” si un diccionario aún no existe.
Ejemplo
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 )
Almacena un diccionario cifrado. Si existe un diccionario con el mismo nombre, se sobrescribirá. Devuelve “true” si tiene éxito; devuelve “false” si falla.
Parámetros
context – El contexto de Android que realiza esta llamada.
Ejemplo
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 )
Agrega un diccionario cifrado a un diccionario existente. Si no existe ningún diccionario, se almacena el diccionario especificado. Devuelve “true” si tiene éxito; devuelve “false” si falla.
Parámetros
context – El contexto de Android que realiza esta llamada.
Ejemplo
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 )
Elimina el diccionario. Devuelve “true” si tiene éxito; devuelve “false” si falla.
Parámetros
context – El contexto de Android que realiza esta llamada.
Ejemplo
MDXDictionary dict = MDXDictionary.find(getContext(), "app-settings");if( dict != null ) { dict.delete( getContext() ); } <!--NeedCopy-->
Notas y consideraciones
- Los constructores lanzarán una IllegalArgumentException cuando se pasen parámetros no válidos.
- La operación create() nunca devolverá nulo. Si la política de cifrado está habilitada, el usuario es responsable de asegurarse de que esté desbloqueada antes de que se llame a create().
- La operación append() puede fallar si un objeto almacenado que puede ser analizado o serializado no es un tipo de datos conocido de Java o Android. Secure Hub no puede deserializar el diccionario porque la clase no es conocida internamente por Secure Hub.
- La operación append() adjuntará su paquete a un paquete de diccionario existente. Si el paquete almacenado es diferente al paquete en el diccionario, el paquete local no reflejará el estado del paquete almacenado. Es necesaria una operación find() o una operación create() para consultar el estado del paquete almacenado previamente.