Product Documentation

XenMobile-API für Android

27. Februar 2018

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.

App-Verwaltung:

  • isManaged
  • isWrapped

MDX-Richtlinien:

  • getPoliciesXML
  • getPolicyValue
  • setPolicyChangeMessenger

Freigegebener Tresor:

  • MDXDictionary

Benutzerdaten:

  • getUserName

com.citrix.worx.sdk.MDXApplication-Klasse

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

com.citrix.worx.sdk.MDXPolicies-Klasse

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 PolicyName 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 PolicyName 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 Methode create() factory.

    Parameter

    name – Name des Wörterbuchs.

    bundle – Das Android-Paket.

    sequence – Eine Sequenznummber.

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

Hinweise:

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

XenMobile-API für Android