API para Android
La API para Android está basada en Java. En este artículo se resumen las API de Citrix Endpoint Management por función y se ofrecen las definiciones de cada API.
Administración de aplicaciones:
- isManaged
- isWrapped
Directivas MDX:
- getPoliciesXML
- getPolicyValue
- setPolicyChangeMessenger
Caja fuerte compartida:
- MDXDictionary
Datos del usuario:
- getUserName
Clase com.citrix.worx.sdk.MDXApplication
Métodos
-
isManaged
public static boolean isManaged (Context context)
Comprueba si MDX administra actualmente la aplicación, lo que significa que la aplicación Citrix Secure Hub está instalada en el dispositivo y se aplican las directivas de Endpoint Management en ella. La infraestructura back-end de Citrix Endpoint Management (cajas fuertes de claves) se consultan para obtener claves parciales de cifrado de datos (secretos) que MDX va a usar para cifrar los datos contenidos en el archivo de aplicación. Devuelve true si la aplicación está administrada.
Las aplicaciones Premium no administradas usan los valores predeterminados de las directivas de Endpoint Management especificados en Applications/Citrix/MDXToolkit/data/MDXSDK_Android/default_sdk_policies.xml. No se aplican las directivas a aplicaciones General no administradas.
Parámetros
context. El contexto Android que realiza la llamada.
Ejemplo
boolean bIsManaged = MDXApplication.isManaged(context);
-
isWrapped
public static boolean isWrapped (Context context)
Devuelve True si la aplicación está empaquetada con MDX Toolkit.
Parámetros
context. El contexto Android que realiza la 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 un valor nulo si el usuario no está inscrito, la aplicación no está administrada o no está empaquetada.
Parámetros
context. El contexto Android que realiza la 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, que consiste en una línea por directiva 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 en caso de fallo.
Parámetros
context. El contexto Android que realiza la llamada.
Ejemplo
String policiesXML = MDXPolicies.getPoliciesXML(context);
-
getPolicyValue
public static String getPolicyValue (Context context, String policyName)
Devuelve una cadena que contiene el valor actual de la directiva nombrada. Devuelve null si no se encuentra ningún valor.
Parámetros
context. El contexto Android que realiza la llamada.
policyName. El nombre de la directiva a buscar. Un nombre de directiva es el valor del elemento PolicyName en un archivo XML de directiva.
Ejemplo
String value = MDXPolicies.getPolicyValue(context"DisableCamera");
-
setPolicyChangeMessenger
public static String setPolicyChangeMessenger (Context context, String policyName. Messenger messenger)
Registra al destinatario que recibirá el mensaje cuando se cambie el valor de la directiva. Cuando MDX detecte que un valor de directiva se ha cambiado en la consola de Citrix Endpoint Management, MDX notificará a este destinatario. Tras recibir el mensaje, podrá usar las demás API para volver a leer los valores de directiva y modificar la aplicación. Devuelve el valor null.
Parámetros
context. El contexto Android que realiza la llamada.
policyName. El nombre de la directiva a supervisar. Un nombre de directiva es el valor del elemento PolicyName en un archivo XML de directiva.
messenger. El mensajero (destinatario) que recibirá mensajes cuando se cambie el valor de la directiva.
Ejemplo
MDXPolicies.setPolicyChangeMessenger(context, "DisableCamera", messenger);
Clase com.citrix.mdx.common.MDXDictionary
MDXDictionary es un contenedor para leer y almacenar paquetes Android cifrados de pares clave/valor. Las aplicaciones móviles de productividad que se encuentren en el mismo grupo de seguridad MDX comparten el diccionario. Use la API de caja fuerte compartida para compartir contenido administrado entre las aplicaciones que tienen el mismo diccionario MDX. Por ejemplo, puede compartir certificados y claves privadas a través de una aplicación inscrita, de modo que las aplicaciones pueden obtener un certificado de la caja fuerte segura, en lugar de obtenerlo de Secure Hub.
Los diccionarios se almacenan cifrados, independientemente de lo configurado en las directivas “Cifrado de archivos privados” y “Cifrado de archivos públicos”. Los desarrolladores deben desbloquear la caja fuerte antes de obtener diccionarios.
Operaciones constructoras (creadoras)
-
public MDXDictionary( MDXDictionary source )
Crea una copia de un diccionario MDXDictionary existente.
Parámetros
source. El diccionario MDXDictionary que se debe copiar.
-
public MDXDictionary( String name, Bundle bundle, long sequence )
Crea un MDXDictionary a partir de un nombre, un paquete y un número de secuencia. Si no conoce el número de secuencia, utilice el método create() factory.
Parámetros
name. El nombre del diccionario.
bundle. El paquete de Android.
sequence. El número de la secuencia.
Métodos
-
public static MDXDictionary create( Context context, String name )
Crea un diccionario tras comprobar si ya existe un diccionario con el mismo nombre. Si el diccionario no existe, se devuelve un diccionario nuevo. De lo contrario, se devuelve el diccionario existente. Este método nunca devuelve null.
Parámetros
context. El contexto Android que realiza la llamada.
name. El nombre del diccionario.
Ejemplo
// Crea una instancia de diccionario.
MDXDictionary dict = MDXDictionary.create(getContext(), "app-settings");
-
public static boolean delete( Context context, String name )
Elimina un diccionario buscado por nombre. Devuelve true en caso de operación correcta; devuelve false en caso de fallo.
Parámetros
context. El contexto Android que realiza la llamada.
name. El nombre del diccionario.
Ejemplo
// Crea una instancia de 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 Android que realiza la 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 se trata de un diccionario nuevo o un diccionario existente. Devuelve true si el 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 ya existe un diccionario con el mismo nombre, se sobrescribirá. Devuelve true en caso de operación correcta; devuelve false en caso de fallo.
Parámetros
context. El contexto Android que realiza la 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 )
Añade un diccionario cifrado a un diccionario existente. Si no hay ningún diccionario, se guarda el diccionario especificado. Devuelve true en caso de operación correcta; devuelve false en caso de fallo.
Parámetros
context. El contexto Android que realiza la 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 en caso de operación correcta; devuelve false en caso de fallo.
Parámetros
context. El contexto Android que realiza la llamada.
Ejemplo
MDXDictionary dict = MDXDictionary.find(getContext(), "app-settings");
if( dict != null ) { dict.delete( getContext() ); } <!--NeedCopy-->
Notas y consideraciones
- Las operaciones constructoras (creadoras) iniciarán una excepción IllegalArgumentException si se transfieren parámetros no válidos.
- La operación create() nunca devolverá el valor null. Si la directiva de cifrado está habilitada, el usuario es el responsable de que se desbloquee antes de llamar a create().
- La operación append() puede fallar si un objeto almacenado que se puede analizar o serializar no es un tipo de datos conocido de Java o Android. Secure Hub no puede deserializar el diccionario porque no conoce internamente la clase.
- La operación append() agregará su paquete a un paquete de diccionario existente. Si el paquete almacenado difiere del paquete existente en el diccionario, el paquete local no reflejará el estado del paquete almacenado. Es necesaria una operación find() o create() para consultar el estado del paquete almacenado previamente.