Product Documentation

Worx-API für Android

Dec 20, 2017

Die XenMobile-API für Android basiert auf Java. Dieser Artikel bietet eine Übersicht über die XenMobile-APIs nach Feature sowie über die API-Definitionen.

Feature

APIs

App-Verwaltung

isManaged

isWrapped

MDX-Richtlinien

getPoliciesXML

getPolicyValue

setPolicyChangeMessenger

Freigegebener Tresor

MDXDictionary

Benutzerdaten

getUserName

Class com.citrix.worx.sdk.MDXApplication

Methoden

isManaged

public static boolean isManaged (Context context)

Prüft, ob die App von MDX verwaltet wird, was bedeutet, dass Citrix Secure Hub auf dem Gerät installiert ist und XenMobile-Richtlinien für die App erzwungen werden. Die Back-End-Infrastruktur von XenMobile (Schlüsseltresore) wird auf Datenverschlüsselungs-Teilschlüssel (geheime Schlüssel) abgefragt, die von MDX zum Verschlüsseln von App-Dateidaten verwendet werden. Gibt true zurück, wenn die App verwaltet wird.

Nicht verwaltete Premium-Apps verwenden die in Applications/Citrix/MDXToolkit/data/MDXSDK_Android/default_sdk_policies.xml festgelegten XenMobile-Richtlinienstandardwerte. Richtlinien werden für verwaltete allgemeine Apps nicht durchgesetzt.

Parameter:

context: Android-Kontext, von dem der Aufruf gemacht wird

Beispiel:

boolean bIsManaged = MDXApplication.isManaged(context);

isWrapped

public static boolean isWrapped (Context context)

Gibt true zurück, wenn die App mit dem MDX Toolkit umschlossen wurde.

Parameter:

context: Android-Kontext, von dem der Aufruf gemacht wird

Beispiel:

boolean bIsWrapped = MDXApplication.isWrapped(context);

getUserName

public static String getUserName (Context context)

Gibt eine Zeichenfolge mit dem Namen eines registrierten Benutzers einer mit MDX verwalteten App unabhängig von dessen Anmeldestatus zurück. Gibt einen NULL-Wert zurück, wenn der Benutzer nicht registriert ist oder wenn die App nicht verwaltet wird oder nicht umschlossen ist.

Parameter:

context: Android-Kontext, von dem der Aufruf gemacht wird

Beispiel:

String userName = MDXApplication.getUserName(context);

Class com.citrix.worx.sdk.MDXPolicies

Methoden

getPoliciesXML

public static String getPoliciesXML (Context context)

Gibt den Inhalt von default_sdk_policies.xml in Form einer Zeile pro Richtlinie mit dem Präfix (match) zurück. Das Präfix gibt an, dass der Wert in der XML-Datei dem von MDXPolicies.getPolicyValue() zurückgegebenen Wert entspricht. Gibt bei einem Fehler eine leere Zeichenfolge zurück.

Parameter:

context: Android-Kontext, von dem der Aufruf gemacht wird

Beispiel:

String policiesXML = MDXPolicies.getPoliciesXML(context);

getPolicyValue

public static String getPolicyValue (Context context,  
                     String policyName)

Gibt eine Zeichenfolge mit dem aktuellen Wert der benannten Richtlinie zurück. Gibt null zurück, wenn kein Wert gefunden wird.

Parameter:

context: Android-Kontext, von dem der Aufruf gemacht wird

policyName : der Name der gesuchten Richtlinie. Ein Richtlinienname ist der Wert des Elements in einer Richtlinien-XML-Datei.

Beispiel:

String value = MDXPolicies.getPolicyValue(context, "DisableCamera");

setPolicyChangeMessenger

public static String setPolicyChangeMessenger  
                     (Context context,  
                     String policyName,  
                     Messenger messenger)

Registriert einen Messenger zum Empfang einer Nachricht, wenn der Wert der angegebenen Richtlinie geändert wird. Wenn MDX erkennt, dass ein Richtlinienwert über die XenMobile-Konsole geändert wird, benachrichtigt MDX diesen Messenger. Sie können dann mit den anderen APIs die Richtlinie erneut gelesen und die App ändern. Gibt null zurück.

Parameter:

context: Android-Kontext, von dem der Aufruf gemacht wird

policyName : der Name der zu überwachenden Richtlinie. Ein Richtlinienname ist der Wert des Elements in einer Richtlinien-XML-Datei.

messenger: der Messenger, der bei Änderung des Richtlinienwerts Nachrichten erhalten soll.

Beispiel:

MDXPolicies.setPolicyChangeMessenger(context, "DisableCamera", messenger);

com.citrix.mdx.common.MDXDictionary-Klasse

MDXDictionary ist ein Container für das Lesen und Speichern verschlüsselter Android-Pakete mit Schlüssel/Wert-Paaren. XenMobile Apps in der gleichen MDX-Sicherheitsgruppe teilen ein Wörterbuch. Verwenden Sie die API für den freigegebenen Tresor zum Verwalten der von Apps mit demselben MDX-Wörterbuch gemeinsam verwendeten Inhalte. Sie können beispielsweise Zertifikate und private Schlüssel über eine registrierte App freigeben, sodass Apps ein Zertifikat aus dem Tresor statt von Secure Hub beziehen können.

Wörterbücher werden unabhängig von der Einstellung der Richtlinie zur Verschlüsselung privater Dateien und der Richtlinie zur Verschlüsselung öffentlicher Dateien verschlüsselt gespeichert. Zum Abrufen von Wörterbüchern muss der Tresor entsperrt werden.

Konstruktoren

 

public MDXDictionary( MDXDictionary source )

Erstellt eine Kopie eines bestehenden MDXDictionary.

Parameter:

source: MDXDictionary, das kopiert werden soll

 

public MDXDictionary( String name, Bundle bundle, long sequence )

Erstellt ein MDXDictionary aus Namen, Paket und Sequenznummer. Wenn Sie die Sequenznummer nicht kennen, verwenden Sie die Factorymethode create().

Parameter:

Name: Name des Wörterbuchs

bundle: Android-Paket

sequence: Sequenznummer

 

Methoden

 

public static MDXDictionary create( Context context, String name )

Erstellt ein Wörterbuch unter vorheriger Überprüfung, ob ein Wörterbuch des gleichen Namens bereits vorhanden ist. Ist kein solches Wörterbuch vorhanden, wird eines erstellt. Andernfalls wird das vorhandene Wörterbuch zurückgegeben. Diese Methode nie gibt NULL zurück.

Parameter:

context: Android-Kontext, von dem der Aufruf gemacht wird

Name: Name des Wörterbuchs

Beispiel:

    // erstellt eine Instanz eines Wörterbuchs.
MDXDictionary dict = MDXDictionary.create(getContext(), "app-settings");

 

public static boolean delete( Context context, String name )

Löscht ein Wörterbuch nach Namen. Gibt bei Erfolg "True", bei Fehler "False" zurück.

Parameter:

context: Android-Kontext, von dem der Aufruf gemacht wird

Name: Name des Wörterbuchs

Beispiel:

    // erstellt eine Instanz eines Wörterbuchs.
MDXDictionary.delete(getContext(), "app-settings");

 

public static MDXDictionary find( Context context, String name )

Sucht ein Wörterbuch. Gibt das Wörterbuch zurück oder NULL, wenn kein Wörterbuch gefunden wird.

Parameter:

context: Android-Kontext, von dem der Aufruf gemacht wird

Name: Name des Wörterbuchs

Beispiel:

MDXDictionary dict = MDXDictionary.find(getContext(), "app-settings");

    if( dict != null )
    {
        // Use dictionary
    }

 

 

public boolean isNew( )

Prüft, ob es sich um ein neues oder ein vorhandenes Wörterbuch handelt. Gibt "True" zurück, wenn das Wörterbuch noch nicht existiert.

Beispiel:

MDXDictionary dict = MDXDictionary.create(getContext(), "app-settings");

        if (dict.isNew())
        {
        // Dictionary was not found.
        }
        else
        {
        // Existing dictionary was found.
        }

 

public boolean save( Context context )

Speichert ein verschlüsseltes Wörterbuch. Gibt es ein Wörterbuch mit dem gleichen Namen, wird es überschrieben. Gibt bei Erfolg "True", bei Fehler "False" zurück.

Parameter:

context: Android-Kontext, von dem der Aufruf gemacht wird

Beispiel:

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() );
    }

 

public boolean append( Context context )

Fügt einem vorhandenen Wörterbuch ein verschlüsseltes Wörterbuch an. Ist kein Wörterbuch vorhanden, wird das angegebene Wörterbuch gespeichert. Gibt bei Erfolg "True", bei Fehler "False" zurück.

Parameter:

context: Android-Kontext, von dem der Aufruf gemacht wird

Beispiel:

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

 

 

public boolean delete( Context context )

Löscht das Wörterbuch. Gibt bei Erfolg "True", bei Fehler "False" zurück.

Parameter:

context: Android-Kontext, von dem der Aufruf gemacht wird

Beispiel:

MDXDictionary dict = MDXDictionary.find(getContext(), "app-settings");

    if( dict != null )
    {
        dict.delete( getContext() );
    }

Hinweis

  • Bei Verwendung eines ungültigen Parameters wird die Ausnahme IllegalArgumentException ausgegeben.
  • Der Vorgang create() gibt nie Null zurück. Ist die Verschlüsselungsrichtlinie aktiviert, muss der Benutzer sicherstellen, dass sie vor dem Aufruf von create() entsperrt wird.
  • Der Vorgang append() kann fehlschlagen, wenn ein gespeichertes Objekt, das analysiert oder serialisiert werden kann, kein bekannter Java- oder Android-Datentyp ist. Secure Hub kann das Unmarshalling des Wörterbuchs nicht rückgängig machen, da die Klasse Secure Hub-intern nicht bekannt ist.
  • Über den Vorgang append() wird das angegebene Paket an ein vorhandenes Bibliothekspaket angefügt. Wenn sich das gespeicherte Paket vom Paket im Wörterbuch unterscheidet, spiegelt das lokale Paket nicht den Zustand des gespeicherten Pakets wider. Zur Abfrage des Zustands des zuvor gespeicherten Pakets ist ein find()- oder ein create()-Vorgang erforderlich.