API für Android
Die API für Android basiert auf Java. Dieser Artikel bietet eine Übersicht über die Citrix Endpoint Management-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 Citrix Endpoint Management-Richtlinien für die App erzwungen werden. Die Back-End-Infrastruktur von Endpoint Management (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 Endpoint Management-Richtlinienstandardwerte. Richtlinien werden für nicht verwaltete General-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 Citrix Endpoint Management-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. Mobile Produktivitätsapps 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 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 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 } <!--NeedCopy-->
-
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. } <!--NeedCopy-->
-
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() ); } <!--NeedCopy-->
-
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. } <!--NeedCopy-->
-
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() ); } <!--NeedCopy-->
Hinweise und Überlegungen
- 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.