Android用のAPI
AndroidのAPIはJavaに基づいています。ここでは、Citrix Endpoint Management APIを機能別に概説し、APIの定義を説明します。
アプリの管理
- isManaged
- isWrapped
MDXポリシー
- getPoliciesXML
- getPolicyValue
- setPolicyChangeMessenger
共有コンテナ
- MDXDictionary
ユーザーデータ:
- getUserName
Class com.citrix.worx.sdk.MDXApplication
メソッド
-
isManaged
public static boolean isManaged (Context context)
アプリが現在MDXによって管理されているかどうかを確認します。つまり、デバイスにCitrix Secure Hubアプリがインストールされており、アプリにCitrix Endpoint Managementポリシーが適用されているかどうかを確認します。Endpoint Managementバックエンドインフラストラクチャ(キーコンテナ)に対して、アプリファイルのデータ暗号化にMDXが使用するデータ暗号化部分キー(シークレット)がクエリされます。アプリが管理対象の場合、trueを返します。
非管理対象のPremiumアプリは、Applications/Citrix/MDXToolkit/data/MDXSDK_Android/default_sdk_policies.xmlで指定されているEndpoint Managementポリシーデフォルトを使用します。非管理対象のGeneralアプリには、ポリシーは適用されません。
パラメーター
context – この呼び出しを実行するAndroidコンテキスト。
例
boolean bIsManaged = MDXApplication.isManaged(context);
-
isWrapped
public static boolean isWrapped (Context context)
アプリがMDX Toolkitでラップされている場合、trueを返します。
パラメーター
context – この呼び出しを実行するAndroidコンテキスト。
例
boolean bIsWrapped = MDXApplication.isWrapped(context);
-
getUserName
public static String getUserName (Context context)
ユーザーのサインイン状態に関係なく、MDX管理対象アプリを実行する登録されたユーザーのユーザー名を含む文字列を返します。ユーザーが登録されていない場合、アプリが管理対象でない場合、またはアプリがラップされていない場合は、nilを返します。
パラメーター
context – この呼び出しを実行するAndroidコンテキスト。
例
String userName = MDXApplication.getUserName(context);
Class com.citrix.worx.sdk.MDXPolicies
メソッド
-
getPoliciesXML
public static String getPoliciesXML (Context context)
default_sdk_policies.xmlのコンテンツをポリシーごとに1行で返します。接頭辞(match)により、XMLファイル内の値がMDXPolicies.getPolicyValue()で返された値と一致することを示します。失敗した場合、空の文字列を返します。
パラメーター
context – この呼び出しを実行するAndroidコンテキスト。
例
String policiesXML = MDXPolicies.getPoliciesXML(context);
-
getPolicyValue
public static String getPolicyValue (Context context, String policyName)
指定されたポリシーの現在の値を含むStringを返します。値が見つからない場合、nullを返します。
パラメーター
context – この呼び出しを実行するAndroidコンテキスト。
policyName – 検索するポリシーの名前。ポリシー名は、ポリシーXMLファイル内のPolicyNameエレメントの値です。
例
String value = MDXPolicies.getPolicyValue(context"DisableCamera");
-
setPolicyChangeMessenger
public static String setPolicyChangeMessenger (Context context, String policyName. Messenger messenger)
指定のポリシーの値が変更されたらメッセージを受け取るように、メッセンジャーを登録します。Citrix Endpoint Managementコンソールでポリシーの値が変更されたことがMDXによって検出されると、MDXからこのメッセンジャーに通知が行われます。その後、他のAPIを使用してポリシー値を再度読み取って、アプリを変更できます。nullを返します。
パラメーター
context – この呼び出しを実行するAndroidコンテキスト。
policyName – 監視対象のポリシー名。ポリシー名は、ポリシーXMLファイル内のPolicyNameエレメントの値です。
messenger – ポリシー値が変更されるとメッセージを受け取るメッセンジャー。
例
MDXPolicies.setPolicyChangeMessenger(context, "DisableCamera", messenger);
Class com.citrix.mdx.common.MDXDictionary
MDXDictionaryは、暗号化されたAndroidキー/値ペアバンドルの読み取りと保存に使用されるコンテナです。同じMDXセキュリティグループ内の業務用モバイルアプリはディレクトリを共有します。共有コンテナAPIを使用し、同じMDXディレクトリを使用するアプリ間で管理対象コンテンツを共有します。たとえば、登録されたアプリを介して証明書と秘密キーを共有できるため、アプリはSecure Hubからではなくセキュアなコンテナから証明書を取得できます。
ディクショナリは、プライベートファイル暗号化ポリシー設定およびパブリックファイル暗号化ポリシー設定に関係なく、暗号化された状態で保存されます。開発者は、ディクショナリを取得する前にコンテナのロックを解除する必要があります。
コンストラクター
-
public MDXDictionary( MDXDictionary source )
既存のMDXDictionaryのコピーを作成します。
パラメーター
source – コピーするMDXDictionary。
-
public MDXDictionary( String name, Bundle bundle, long sequence )
名前、バンドル、およびシーケンス番号からMDXDictionaryを作成します。シーケンス番号が不明な場合は、create()ファクトリメソッドを使用します。
パラメーター
name – ディクショナリの名前。
bundle – Androidバンドル。
sequence – シーケンス番号。
メソッド
-
public static MDXDictionary create( Context context, String name )
同じ名前のディクショナリが既に存在するかどうかをまず確認して、ディクショナリを作成します。ディクショナリが存在しない場合、新しいディクショナリが返されます。ディクショナリが存在する場合、既存のディクショナリが返されます。このメソッドはnullを返すことはありません。
パラメーター
context – この呼び出しを実行するAndroidコンテキスト。
name – ディクショナリの名前。
例
//ディクショナリのインスタンスを作成。
MDXDictionary dict = MDXDictionary.create(getContext(), "app-settings");
-
public static boolean delete( Context context, String name )
ディクショナリを名前によって削除します。成功するとtrueを返します。失敗するとfalseを返します。
パラメーター
context – この呼び出しを実行するAndroidコンテキスト。
name – ディクショナリの名前。
例
//ディクショナリのインスタンスを作成。
MDXDictionary.delete(getContext(), "app-settings");
-
public static MDXDictionary find( Context context, String name )
既存のディクショナリを見つけます。既存のディクショナリを返します。ディクショナリが見つからない場合はnullを返します。
パラメーター
context – この呼び出しを実行するAndroidコンテキスト。
name – ディクショナリの名前。
例
MDXDictionary dict = MDXDictionary.find(getContext(),"app-settings");
if( dict != null ) { // Use dictionary } <!--NeedCopy-->
-
public boolean isNew( )
新しいディクショナリなのか既存のディクショナリなのかを確認します。まだディクショナリがない場合はtrueを返します。
例
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 )
暗号化されたディクショナリを保存します。同じ名前のディクショナリが既に存在する場合は、上書きされます。成功するとtrueを返します。失敗するとfalseを返します。
パラメーター
context – この呼び出しを実行するAndroidコンテキスト。
例
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 )
既存のディクショナリに暗号化されたディクショナリを追加します。ディクショナリが存在しない場合、指定されたディクショナリが保存されます。成功するとtrueを返します。失敗するとfalseを返します。
パラメーター
context – この呼び出しを実行するAndroidコンテキスト。
例
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 )
ディクショナリを削除します。成功するとtrueを返します。失敗するとfalseを返します。
パラメーター
context – この呼び出しを実行するAndroidコンテキスト。
例
MDXDictionary dict = MDXDictionary.find(getContext(), "app-settings");
if( dict != null ) { dict.delete( getContext() ); } <!--NeedCopy-->
注意事項と考慮事項
- 無効なパラメーターが渡された場合、コンストラクタはIllegalArgumentExceptionをスローします。
- create()操作はnullを返しません。暗号化ポリシーが有効になっている場合、ユーザーはcreate()が呼び出される前に暗号化ポリシーがロック解除されるようにする必要があります。
- 解析またはシリアル化される保存されたオブジェクトが既知のJavaデータ型またはAndroidデータ型でない場合、append()操作は失敗します。Secure Hubに対してクラスが内部的に既知でないので、Secure Hubはディクショナリを復号化できません。
- append()操作は、そのバンドルを既存のディクショナリバンドルに追加します。保存されたバンドルがディクショナリ内のバンドルと異なる場合、ローカルのバンドルでは保存されたバンドルの状態は反映されません。以前に保存されたバンドルの状態をクエリするには、find()操作またはcreate()操作が必要です。