デバイス管理の概要

デバイス管理のサポート終了。Android 9 以降 (API レベル 28)以降、一部の管理ポリシーは デバイス管理者によって起動されます。この変更への対応をすぐに開始されることをおすすめします。学習内容 移行オプションを確認するには、このモジュールの <ph type="x-smartling-placeholder"></ph> デバイス管理のサポート終了

Android は、エンタープライズ アプリ向けに、 Android Device Administration APIDevice Administration API は、 管理機能も用意されています。これらの API を使用すると、 IT 部門が IT 部門や IT 部門に 専門家は従業員のデバイスを細かく制御する必要があります。たとえば、 組み込みの Android メールアプリでは、これらの API を活用して Exchange のサポート。Exchange の管理者はメールアプリを使用して パスワード ポリシー(英数字のパスワードや数字を含む)を適用する PIN をデバイス間で同期。管理者はリモートワイプ(つまり、 (工場出荷時のデフォルト設定に復元するなど)は、スマートフォンの紛失や盗難にあってもかまいません。Exchange ユーザーが同期できる メールとカレンダーのデータを取得します。

このドキュメントは、エンタープライズ さまざまなソリューションがありますまた、Kubernetes クラスタの Device Administration API によって実現され、より強力なセキュリティ Android 搭載の従業員向けデバイスです。

: 仕事用ポリシーの作成方法については、 Android for Work デプロイ用コントローラについては、以下をご覧ください。 Device Policy Controller をビルドする

ヘッドレス デバイス所有者モード

Android 14(API レベル 34)では、ヘッドレス システム ユーザー モード( UserManager.isHeadlessSystemUserModetrue を返します。ヘッドレス システム ユーザー モードでは、 バックグラウンド ユーザーであり、エンドユーザーは追加のフォアグラウンド ユーザーに依存 です。Android 14 では、 ヘッドレス デバイス所有者のアフィリエイト モード 追加されたプロファイル オーナーが アフィリエイト ユーザー デバイス所有者が設定されているシステム ユーザー以外のものになります。

ヘッドレス システム ユーザーで構成されたデバイス(システム ユーザーが バックグラウンドで実行)、スコープがグローバルなデバイス ポリシーのみ (すべてのユーザーに適用されるポリシー)がフォアグラウンド ユーザーに適用される できます。詳しくは、 addUserRestriction をご覧ください。

<ph type="x-smartling-placeholder">

Android デバイスのメーカーは、 ガイダンス source.android.com に公開されています。

Device Administrator API の概要

以下に Device Administration API を使用するアプリタイプの例を示します。

  • メール クライアント。
  • リモートワイプを行うセキュリティ アプリ。
  • デバイス管理サービスとアプリ。

仕組み

Device Administration API を使用して、ユーザーが管理するデバイス管理アプリを作成します。 できます。デバイス管理アプリは、 あります。仕組みは次のとおりです。

  • システム管理者がデバイス管理アプリを作成し、 リモート/ローカル デバイスのセキュリティ ポリシーも適用できます。これらのポリシーは または、アプリがサードパーティからポリシーを動的に取得し、 あります。
  • アプリはユーザーのデバイスにインストールされますが、Android は 自動化されたプロビジョニング ソリューションがありません。システム管理者が ユーザーにアプリを配布する手順は次のようになります。 <ph type="x-smartling-placeholder">
      </ph>
    • Google Play。
    • 別のストアからのインストールを有効化する。
    • メールやウェブサイトなどの方法でアプリを配布する。
  • デバイス管理アプリを有効にするよう求めるメッセージがユーザーに表示されます。方法 これがいつ行われるかは、アプリの実装方法によって異なります。
  • ユーザーがデバイス管理アプリを有効にすると、 あります。これらのポリシーに準拠することで、通常は次のようなメリットがもたらされます。 機密データへのアクセスを防止できます。

ユーザーがデバイス管理アプリを有効にしていない場合、デバイス管理アプリはデバイスに存在するものの、非アクティブな状態になります。ユーザーはそのポリシーの対象にならず、逆にアプリによるメリットも得られません。たとえば、データの同期が行えなくなる場合があります。

ユーザーがポリシーに準拠しなかった場合(たとえば、ユーザーが など)は、アプリが決定します。 説明しますただし これによって通常、ユーザーは データを同期できます

ポリシーが必須ではないサーバーに接続を試みた場合、 Device Administration API でサポートされている場合は、 できます。現在、Device Administration API では、部分的な認証、 プロビジョニングを行いますつまり、デバイス(以前のデバイスなど)が 記載されているポリシーのすべてに対応していない場合、 接続します。

デバイスに有効な管理アプリが複数ある場合、最も厳しいポリシーが適用されます。 適用されます。特定の管理者をターゲットにする方法はない 。

既存のデバイス管理アプリをアンインストールするには、ユーザーが次の操作を行う必要があります。 まず、アプリの管理者としての登録を解除します。

ポリシー

企業環境では多くの場合、従業員のデバイスに デバイスの使用を規定する厳格なポリシーを遵守していること。「 Device Administration API は、表 1 に示すポリシーをサポートしています。 なお、Device Administration API は現在、screen のパスワードのみをサポートしています。 lock:

表 1. Device Administration API でサポートされるポリシー。

ポリシー 説明
パスワードを有効にする デバイスで PIN やパスワードの要求を必須にします。
最小パスワード長 パスワードに必要な文字数を設定します。たとえば、 6 文字以上の PIN またはパスワードを要求できる。
英数字のパスワードを必須にする パスワードには、 組み合わせることもできます。記号も使用できます。
複雑なパスワードを必須にする 英字、数字、特殊記号を含めたパスワードを必須にします。Android 3.0 で導入されました。
パスワードに最低限必要な英文字の文字数 メッセージの最小数 パスワードの文字数を、すべての管理者または特定の管理者のパスワードに指定します。Android 3.0 で導入されました。
パスワードに最低限必要な小文字の文字数 小文字の最小数 パスワードの文字数を、すべての管理者または特定の管理者のパスワードに指定します。Android 3.0 で導入されました。
パスワードに最低限必要な英文字以外の文字数 メッセージの最小数 すべての管理者または特定の管理者のパスワードに、文字以外の文字列が必要です。Android 3.0 で導入されました。
パスワードに最低限必要な数字の文字数 すべての管理者または特定の管理者のパスワードに最低限必要な数字の文字数。Android 3.0 で導入されました。
パスワードに最低限必要な記号の文字数 すべての管理者または特定の管理者のパスワードに最低限必要な記号の文字数。Android 3.0 で導入されました。
パスワードに最低限必要な大文字の文字数 すべての管理者または特定の管理者のパスワードに最低限必要な大文字の文字数。Android 3.0 で導入されました。
パスワードの有効期限 パスワードが期限切れとなる時間。デバイス管理者が設定した有効期限からの差分(ミリ秒単位)として表されます。Android 3.0 で導入されました。
パスワード履歴の制限 このポリシーにより、ユーザーは直近 n 個の一意のパスワードを再利用できなくなります。 このポリシーは通常、 setPasswordExpirationTimeout()。これにより、 指定の時間が経過した後にパスワードを更新できるようにする。 Android 3.0 で導入されました。
パスワード試行の上限回数 この期限までにユーザーが間違ったパスワードを入力できる回数を指定します データがワイプされます。Device Administration API を使用すると、管理者は リモートでデバイスを出荷時の設定にリセットします。これにより、 デバイスの紛失や盗難が発生した場合です。
非アクティブでロックされるまでの最大時間 ユーザーが画面に最後にタッチしてからの経過時間を設定します。 デバイスで画面がロックされる前にボタンを押した。この場合、ユーザーは PIN またはパスワードを再度入力しないと、デバイスの使用や データへのアクセスを制御できます。1~60 分の値を指定できます。
ストレージの暗号化を必須にする ストレージ領域の暗号化を指定します(デバイスでサポートされている場合)。 Android 3.0 で導入されました。
カメラを無効にする カメラを無効にすることを指定します。なお、このファイアウォール ルールに 永久に無効になりますカメラの有効/無効を動的に切り替えられる 基づいて予測を行います。Android 4.0 で導入されました。

その他の機能

本デバイスは、上記の表に記載されているポリシーをサポートすることに加えて、 Administration API を使用すると、次のことができます。

  • ユーザーに新しいパスワードを設定するよう促す。
  • すぐにデバイスをロックする。
  • デバイスのデータをワイプする(デバイスを出荷時のデフォルトに戻す)

サンプルアプリ

このページで使用している例は、Device Administration API に基づいています。 サンプル(SDK サンプルに含まれる)に含まれる Android SDK Manager など)に配置され、システム上に <sdk_root>/ApiDemos/app/src/main/java/com/example/android/apis/app/DeviceAdminSample.java

サンプルアプリにデバイス管理機能のデモがあります。ユーザーに提示する デバイス管理アプリを有効にできるユーザー インターフェースが提供されます。1 回 アプリを有効にすると、ユーザー インターフェースの 次の操作を行います。

  • パスワードのレベルを設定する。
  • ユーザーのパスワードの要件(最小文字数、 含める必要がある数字などです。
  • パスワードを設定する。パスワードが 制限するとエラーが返されます。
  • パスワードの入力失敗回数の上限を設定します。この回数を超えるとデバイスがワイプされます (出荷時の設定に復元されます)。
  • パスワードの有効期限を設定する。
  • パスワードの履歴の長さを設定します(「長さ」とは、履歴に保存されている古いパスワードの数を指します)。 これにより、ユーザーは鍵を再利用せずに 以前に使用した n 個のパスワードのうちの 1 つ。
  • デバイスでサポートされている場合に、ストレージ領域の暗号化を指定する。
  • デバイスがアクティブでない時間の上限を設定します あります。
  • すぐにデバイスをロックする。
  • デバイスのデータをワイプする(出荷時の設定に戻す)。
  • カメラを無効にする。

図 1. サンプルアプリのスクリーンショット

デバイス管理アプリの開発

システム管理者は、Device Administration API を使用してアプリを作成できます。 リモート/ローカル デバイスのセキュリティ ポリシーを適用します。このセクション に、デバイス管理の作成に必要な手順の概要を 。

マニフェストの作成

Device Administration API を使用するには、アプリの 次のものを含める必要があります。

以下は、Device Administration サンプル マニフェストからの抜粋です。

<activity android:name=".app.DeviceAdminSample"
            android:label="@string/activity_sample_device_admin">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.SAMPLE_CODE" />
    </intent-filter>
</activity>
<receiver android:name=".app.DeviceAdminSample$DeviceAdminSampleReceiver"
        android:label="@string/sample_device_admin"
        android:description="@string/sample_device_admin_description"
        android:permission="android.permission.BIND_DEVICE_ADMIN">
    <meta-data android:name="android.app.device_admin"
            android:resource="@xml/device_admin_sample" />
    <intent-filter>
        <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
    </intent-filter>
</receiver>

以下の点にご注意ください。

  • 次の属性は、サンプルアプリが存在する文字列リソースを参照します。 ApiDemos/res/values/strings.xml。リソースの詳細については、このモジュールの アプリリソース
    • android:label="@string/activity_sample_device_admin" は、 ユーザーが読むことができるアクティビティのラベルです。
    • android:label="@string/sample_device_admin" は、 ユーザーが読み取り可能な権限のラベル。
    • android:description="@string/sample_device_admin_description" とは ユーザーが読むことができる権限の説明。通常、説明文は長く、 より有益 指定します。
  • android:permission="android.permission.BIND_DEVICE_ADMIN" は、DeviceAdminReceiver サブクラスが追加する必要のある権限です。 システムのみが受信者とやり取りできるようにする必要があります(この権限をアプリに付与することはできません)。この 他のアプリがデバイス管理アプリを悪用するのを防ぐことができます。
  • android.app.action.DEVICE_ADMIN_ENABLED がメインです 追加するために DeviceAdminReceiver サブクラスが処理する必要があるアクション デバイスを管理できます。ユーザーが設定を有効にすると、受信側に設定されます。 。通常、コードではこの処理に onEnabled()。これに対応するには、レシーバーが BIND_DEVICE_ADMIN 権限を付与して、他のアプリが 悪用はできません。
  • ユーザーがデバイス管理アプリを有効にすると、 特定のシステムのブロードキャストに応じてアクションを実行する権限 できます。対象となるイベントが発生したときに、アプリはポリシーを強制できます。対象 (例: ポリシーを満たしていない新しいパスワードをユーザーが設定しようとした場合) 別のパスワードを選択するようユーザーに促すことができます。 要件を満たす必要があります。
  • アプリの公開後はレシーバ名を変更しないでください。名前が 変更すると、ユーザーがアプリを更新すると、デバイス管理が無効になります。詳しくは以下をご覧ください。 <receiver>
  • android:resource="@xml/device_admin_sample" メタデータで使用されるセキュリティ ポリシーを宣言します。メタデータは、追加の DeviceAdminInfo クラスで解析されたデバイス管理者に固有の情報。こちらが device_admin_sample.xml:
<device-admin xmlns:android="http://schemas.android.com/apk/res/android">
  <uses-policies>
    <limit-password />
    <watch-login />
    <reset-password />
    <force-lock />
    <wipe-data />
    <expire-password />
    <encrypted-storage />
    <disable-camera />
  </uses-policies>
</device-admin>

デバイス管理アプリを設計する際は、 アプリに関連するポリシーのみを含む、すべてのポリシーを含める。

マニフェスト ファイルの詳細については、Android デベロッパー ガイドをご覧ください。

コードの実装

Device Administration API には、次のクラスが含まれます。

DeviceAdminReceiver
デバイス管理コンポーネントを実装するための基本クラス。このクラスは、 送信されるインテントのアクションを解釈するための利便性が ありませんデバイス管理アプリには、 DeviceAdminReceiver サブクラス。
DevicePolicyManager
デバイスに適用されるポリシーを管理するクラス。ほとんどのお客様は このクラスは、ユーザーが公開している DeviceAdminReceiver を あります。DevicePolicyManager は次のポリシーを管理します: 1 つ以上の DeviceAdminReceiver インスタンス
DeviceAdminInfo
このクラスは、メタデータを指定するために使用されます。 デバイス管理者コンポーネントについては

これらのクラスは、デバイス管理アプリが完全に機能する基盤となります。 このセクションの残りの部分では、DeviceAdminReceiver と デバイス管理アプリを作成するための DevicePolicyManager API。

DeviceAdminReceiver のサブクラス化

デバイス管理アプリを作成するには、Terraform で DeviceAdminReceiverDeviceAdminReceiver クラス 特定のイベントが発生したときにトリガーされる 発生しません

DeviceAdminReceiver サブクラス内のサンプルアプリ 特定のイベントに応答して Toast 通知を表示するだけです。 できます。例:

Kotlin

class DeviceAdminSample : DeviceAdminReceiver() {

    private fun showToast(context: Context, msg: String) {
        context.getString(R.string.admin_receiver_status, msg).let { status ->
            Toast.makeText(context, status, Toast.LENGTH_SHORT).show()
        }
    }

    override fun onEnabled(context: Context, intent: Intent) =
            showToast(context, context.getString(R.string.admin_receiver_status_enabled))

    override fun onDisableRequested(context: Context, intent: Intent): CharSequence =
            context.getString(R.string.admin_receiver_status_disable_warning)

    override fun onDisabled(context: Context, intent: Intent) =
            showToast(context, context.getString(R.string.admin_receiver_status_disabled))

    override fun onPasswordChanged(context: Context, intent: Intent, userHandle: UserHandle) =
            showToast(context, context.getString(R.string.admin_receiver_status_pw_changed))
...
}

Java

public class DeviceAdminSample extends DeviceAdminReceiver {

    void showToast(Context context, String msg) {
        String status = context.getString(R.string.admin_receiver_status, msg);
        Toast.makeText(context, status, Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onEnabled(Context context, Intent intent) {
        showToast(context, context.getString(R.string.admin_receiver_status_enabled));
    }

    @Override
    public CharSequence onDisableRequested(Context context, Intent intent) {
        return context.getString(R.string.admin_receiver_status_disable_warning);
    }

    @Override
    public void onDisabled(Context context, Intent intent) {
        showToast(context, context.getString(R.string.admin_receiver_status_disabled));
    }

    @Override
    public void onPasswordChanged(Context context, Intent intent, UserHandle userHandle) {
        showToast(context, context.getString(R.string.admin_receiver_status_pw_changed));
    }
...
}

アプリの有効化

デバイス管理アプリが処理する必要がある主なイベントの 1 つは、ユーザーです。 有効にします。ユーザーは、明示的にアプリを有効にする 適用するポリシーを定義します。ユーザーがアプリを有効にしないことを選択した場合 デバイスには引き続き存在しますが、そのポリシーは適用されず、ユーザーは メリットが得られます

アプリを有効にするプロセスは、ユーザーが ACTION_ADD_DEVICE_ADMIN をトリガーするアクション 使用します。 ユーザーが [有効にする 管理者] チェックボックスをオンにします。

ユーザーが [Enable Admin] チェックボックスをオンにすると、 デバイス管理アプリを有効にするようユーザーに促すように変更されます。 2.

図 2. サンプルアプリ: アプリの有効化

ユーザーが [Enable Admin] チェックボックスをオンにしたときに実行されるコードを以下に示します。これにより onPreferenceChange() 呼び出すことができます。このコールバックは、Preference の値がユーザーによって変更され、設定または永続化(あるいはその両方)されるときに呼び出されます。ユーザーがアプリを有効にすると、 デバイス管理アプリを有効にするようユーザーに促すように変更されます。 2.それ以外の場合は、デバイス管理アプリは無効になります。

Kotlin

override fun onPreferenceChange(preference: Preference, newValue: Any): Boolean {
    if (super.onPreferenceChange(preference, newValue)) return true
    val value = newValue as Boolean
    if (preference == enableCheckbox) {
        if (value != adminActive) {
            if (value) {
                // Launch the activity to have the user enable our admin.
                val intent = Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN).apply {
                    putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, deviceAdminSample)
                    putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,
                            activity.getString(R.string.add_admin_extra_app_text))
                }
                startActivityForResult(intent, REQUEST_CODE_ENABLE_ADMIN)
                // return false - don't update checkbox until we're really active
                return false
            } else {
                dpm.removeActiveAdmin(deviceAdminSample)
                enableDeviceCapabilitiesArea(false)
                adminActive = false
            }
        }
    } else if (preference == disableCameraCheckbox) {
        dpm.setCameraDisabled(deviceAdminSample, value)
    }
    return true
}

Java

@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
    if (super.onPreferenceChange(preference, newValue)) {
        return true;
    }
    boolean value = (Boolean) newValue;
    if (preference == enableCheckbox) {
        if (value != adminActive) {
            if (value) {
                // Launch the activity to have the user enable our admin.
                Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
                intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, deviceAdminSample);
                intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,
                        activity.getString(R.string.add_admin_extra_app_text));
                startActivityForResult(intent, REQUEST_CODE_ENABLE_ADMIN);
                // return false - don't update checkbox until we're really active
                return false;
            } else {
                dpm.removeActiveAdmin(deviceAdminSample);
                enableDeviceCapabilitiesArea(false);
                adminActive = false;
            }
        }
    } else if (preference == disableCameraCheckbox) {
        dpm.setCameraDisabled(deviceAdminSample, value);
    }
    return true;
}

intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mDeviceAdminSample) は、mDeviceAdminSample(つまり、 DeviceAdminReceiver コンポーネントなど)がターゲット ポリシーです。 この行から、図 2 に示すユーザー インターフェースを呼び出し、 システムにデバイス管理者を追加する(または拒否を許可する)。

アプリケーションの状態によって デバイス管理アプリが有効になっていると、アプリが アクティブです。これを行うには、DevicePolicyManager メソッドを使用します。 isAdminActive()DevicePolicyManager が メソッド isAdminActive()DeviceAdminReceiver を受け取ります。 引数:

Kotlin

private lateinit var dpm: DevicePolicyManager
...
private fun isActiveAdmin(): Boolean = dpm.isAdminActive(deviceAdminSample)

Java

DevicePolicyManager dpm;
...
private boolean isActiveAdmin() {
    return dpm.isAdminActive(deviceAdminSample);
}

ポリシーの管理

DevicePolicyManager はポリシーを管理するためのパブリック クラスです。 適用できることを示します。DevicePolicyManager さんが 1 個のポリシーを管理しています またはそれ以上の DeviceAdminReceiver インスタンス。

DevicePolicyManager を扱う方法を以下に示します。

Kotlin

dpm = getSystemService(Context.DEVICE_POLICY_SERVICE) as DevicePolicyManager

Java

DevicePolicyManager dpm =
    (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);

このセクションでは、DevicePolicyManager を使用して以下を行う方法について説明します。 管理タスク:

パスワード ポリシーを設定する

DevicePolicyManager には、以下を設定、適用するための API が含まれています。 デバイス パスワード ポリシー。Device Administration API では、パスワードは 画面ロックこのセクションでは、パスワード関連の一般的なタスクについて説明します。

デバイスのパスワードを設定する

このコードは、パスワードを設定するようユーザーに促すユーザー インターフェースを表示します。

Kotlin

Intent(DevicePolicyManager.ACTION_SET_NEW_PASSWORD).also { intent ->
    startActivity(intent)
}

Java

Intent intent = new Intent(DevicePolicyManager.ACTION_SET_NEW_PASSWORD);
startActivity(intent);
パスワードのレベルを設定する

パスワードのレベルは、次の DevicePolicyManager 定数のいずれかになります。

PASSWORD_QUALITY_ALPHABETIC
ユーザーは 少なくとも英字(またはその他の記号)を含むパスワードを使用してください。
PASSWORD_QUALITY_ALPHANUMERIC
ユーザーは 数字英字の両方(または あります。
PASSWORD_QUALITY_NUMERIC
ユーザーはパスワードを入力する必要があります 数字を含める必要があります。
PASSWORD_QUALITY_COMPLEX
ユーザー 少なくとも文字、数字、数字を含むパスワードを入力してください。 特別な記号です。
PASSWORD_QUALITY_SOMETHING
なんらかのルールを それが何であるかは関係ありません。
PASSWORD_QUALITY_UNSPECIFIED
このポリシーにはパスワードの要件がありません。

英数字のパスワードを要求するパスワード ポリシーを設定する方法は次のとおりです。

Kotlin

private lateinit var dpm: DevicePolicyManager
private lateinit var deviceAdminSample: ComponentName
...
dpm.setPasswordQuality(deviceAdminSample, DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC)

Java

DevicePolicyManager dpm;
ComponentName deviceAdminSample;
...
dpm.setPasswordQuality(deviceAdminSample, DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC);
パスワード コンテンツ要件を設定する

Android 3.0 以降、DevicePolicyManager クラス には、パスワードの内容を微調整できるメソッドが含まれています。対象 たとえば、パスワードに少なくとも 150 文字 n という大文字アルファベットの使用方法を使用できます。パスワードの微調整方法は次のとおりです。 コンテンツ:

次のスニペットの例では、パスワードに少なくとも 2 つの大文字が必要であることを示しています。

Kotlin

private lateinit var dpm: DevicePolicyManager
private lateinit var deviceAdminSample: ComponentName
private val pwMinUppercase = 2
...
dpm.setPasswordMinimumUpperCase(deviceAdminSample, pwMinUppercase)

Java

DevicePolicyManager dpm;
ComponentName deviceAdminSample;
int pwMinUppercase = 2;
...
dpm.setPasswordMinimumUpperCase(deviceAdminSample, pwMinUppercase);
最小パスワード長を設定する

指定した最小値以上のパスワードが必要になるように指定できます あります。例:

Kotlin

private lateinit var dpm: DevicePolicyManager
private lateinit var deviceAdminSample: ComponentName
private val pwLength: Int = ...
...
dpm.setPasswordMinimumLength(deviceAdminSample, pwLength)

Java

DevicePolicyManager dpm;
ComponentName deviceAdminSample;
int pwLength;
...
dpm.setPasswordMinimumLength(deviceAdminSample, pwLength);
パスワード試行の上限回数を設定する

この期限までに、パスワードの入力失敗回数の上限を設定できます。 デバイスがワイプ(初期状態にリセット)されたとき。例:

Kotlin

val dPM:DevicePolicyManager
private lateinit var dpm: DevicePolicyManager
private lateinit var deviceAdminSample: ComponentName
private val maxFailedPw: Int = ...
...
dpm.setMaximumFailedPasswordsForWipe(deviceAdminSample, maxFailedPw)

Java

DevicePolicyManager dpm;
ComponentName deviceAdminSample;
int maxFailedPw;
 ...
dpm.setMaximumFailedPasswordsForWipe(deviceAdminSample, maxFailedPw);
パスワードの有効期限を設定する

Android 3.0 以降では、 setPasswordExpirationTimeout() パスワードの有効期限を設定するメソッドで、デバイス管理者が有効期限のタイムアウトを設定してからのデルタ(ミリ秒単位)で表されます。例:

Kotlin

private lateinit var dpm: DevicePolicyManager
private lateinit var deviceAdminSample: ComponentName
private val pwExpiration: Long = ...
...
dpm.setPasswordExpirationTimeout(deviceAdminSample, pwExpiration)

Java

DevicePolicyManager dpm;
ComponentName deviceAdminSample;
long pwExpiration;
...
dpm.setPasswordExpirationTimeout(deviceAdminSample, pwExpiration);
履歴に基づいてパスワードを制限する

Android 3.0 以降では、 setPasswordHistoryLength() アクセスを制限するために、 古いパスワードを再利用する 機能も備えていますこのメソッドは長さを取ります。 このパラメータは、過去のリクエストの件数を パスワードが保存されます。このポリシーを有効に設定した場合、ユーザーは新しい 最新の n 個のパスワードと一致するパスワードを入力します。これにより ユーザーが同じパスワードを何度も使用しないようにできます。このポリシーは通常、 組み合わせて setPasswordExpirationTimeout(), これによってユーザーは パスワードを更新するように促します。

次のスニペットの例では、5 回前までのパスワードを再利用できません。

Kotlin

private lateinit var dpm: DevicePolicyManager
private lateinit var deviceAdminSample: ComponentName
private val pwHistoryLength = 5
...
dpm.setPasswordHistoryLength(deviceAdminSample, pwHistoryLength)

Java

DevicePolicyManager dpm;
ComponentName deviceAdminSample;
int pwHistoryLength = 5;
...
dpm.setPasswordHistoryLength(deviceAdminSample, pwHistoryLength);

デバイスロックを設定する

ユーザーが非アクティブになるまでの期間は、 役立ちます。例:

Kotlin

private lateinit var dpm: DevicePolicyManager
private lateinit var deviceAdminSample: ComponentName
private val timeMs: Long = 1000L * timeout.text.toString().toLong()
...
dpm.setMaximumTimeToLock(deviceAdminSample, timeMs)

Java

DevicePolicyManager dpm;
ComponentName deviceAdminSample;
...
long timeMs = 1000L*Long.parseLong(timeout.getText().toString());
dpm.setMaximumTimeToLock(deviceAdminSample, timeMs);

また、次のように、プログラムでデバイスに直ちにロックするよう指示することもできます。

Kotlin

private lateinit var dpm: DevicePolicyManager
dpm.lockNow()

Java

DevicePolicyManager dpm;
dpm.lockNow();

データのワイプを行う

DevicePolicyManager メソッドを使用すると、 wipeData()して、デバイスを出荷時の設定にリセットします。役に立った 役立ちます。多くの場合、デバイスのワイプは、 特定の条件が満たされた場合に 結果を返すことができますたとえば、 setMaximumFailedPasswordsForWipe(): デバイスを使用する必要があることを示す パスワードの入力失敗回数が上限に達するとワイプされます。

以下に、データをワイプする例を示します。

Kotlin

private lateinit var dpm: DevicePolicyManager
dpm.wipeData(0)

Java

DevicePolicyManager dpm;
dpm.wipeData(0);

wipeData() メソッドは、引数として パラメータに追加オプションのビットマスクを付加します。現在、値は 0 に設定する必要があります。

カメラを無効にする

Android 4.0 以降では、カメラを無効にできます。恒久的に無効化する必要はありません。カメラは、コンテキスト、時間などに基づいて動的に有効または無効にできます。

カメラを無効にするかどうかは、 setCameraDisabled() メソッドを使用します。次のスニペットの例では、チェックボックスの設定に基づいてカメラを有効または無効に設定します。

Kotlin

private lateinit var disableCameraCheckbox: CheckBoxPreference
private lateinit var dpm: DevicePolicyManager
private lateinit var deviceAdminSample: ComponentName
...
dpm.setCameraDisabled(deviceAdminSample, mDisableCameraCheckbox.isChecked)

Java

private CheckBoxPreference disableCameraCheckbox;
DevicePolicyManager dpm;
ComponentName deviceAdminSample;
...
dpm.setCameraDisabled(deviceAdminSample, mDisableCameraCheckbox.isChecked());

ストレージの暗号化

Android 3.0 以降では、 setStorageEncryption() メソッドを使用して、ストレージ領域の暗号化を要求するポリシーを設定します(サポートされている場合)。

例:

Kotlin

private lateinit var dpm: DevicePolicyManager
private lateinit var deviceAdminSample: ComponentName
...
dpm.setStorageEncryption(deviceAdminSample, true)

Java

DevicePolicyManager dpm;
ComponentName deviceAdminSample;
...
dpm.setStorageEncryption(deviceAdminSample, true);

ストレージの暗号化を有効にする方法の詳細な例については、Device Administration API サンプルをご覧ください。

その他のコードサンプル

Android AppRestrictionEnforcer および DeviceOwner サンプルは、このページで説明した API の使用例を示しています。