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

    contextEl 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

    contextEl 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

    contextEl 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

    contextEl 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

    contextEl contexto de Android que realiza esta llamada.

    policyNameEl 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

    contextEl contexto de Android que realiza esta llamada.

    policyNameEl 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.

    messengerEl 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

    sourceEl 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

    nameEl nombre del diccionario.

    bundleEl paquete de Android.

    sequenceUn 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

    contextEl contexto de Android que realiza esta llamada.

    nameEl 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

    contextEl contexto de Android que realiza esta llamada.

    nameEl 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

    contextEl contexto de Android que realiza esta llamada.

    nameEl 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

    contextEl contexto de Android que realiza esta llamada.

    Ejemplo

    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 )

    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

    contextEl 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( &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 )

    Elimina el diccionario. Devuelve “true” si tiene éxito; devuelve “false” si falla.

    Parámetros

    contextEl 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.
API para Android