デバイス ポリシー解決フレームワーク

Android 14 以降では、DevicePolicyManager API を使用して、複数のデバイス ポリシー管理エージェントでポリシーを設定できます。

一般的な原則

複数のデバイス ポリシー管理エージェントがユーザーに対してポリシーを適用できる場合:

  • デバイス ポリシー管理エージェントは、適用済み / 解決済みのポリシーに対して、設定可能なポリシーがあるかどうかを問い合わせることができます。
  • 各ポリシーはコールバック(onPolicySetResult)内に結果を設定して、ポリシーが正しく設定されていること、または、特定の理由(ポリシーの競合、ハードウェアの障害など)で設定に失敗したことを伝えます。
  • ポリシーの解決済みの状態が後で変更された場合は、そのエージェントが設定したものとポリシーが一致しているかどうかを示すコールバック(onPolicyChanged)を受け取ります。
  • ほとんどのポリシーは、最も厳しいポリシーを優先する方式で運用されます。つまり、デバイス ポリシー管理エージェントによって選択された最も厳しいポリシーが適用されます。

Android 14(API レベル 34)以降

Android 14(API レベル 34)以降では、複数のデバイス ポリシー管理エージェントによってポリシーが設定される場合の競合を解決するため、Android 対応デバイスは、下記の表で定義されているとおりにポリシー解決メカニズムを実装する必要があります。下記の表に記載されている解決メカニズム(MostRecentMostRestrictiveStringSetUnionTopPriority)は、Android オープンソース プロジェクトで定義されている解決メカニズムのクラス名です。

DevicePolicyManager API 解決メカニズム
MostRecent: 複数の管理者によって設定された場合は、最新のポリシーが適用されます。
MostRestrictive: いずれかの管理者が設定している場合は、ユーザーの制限を設定します。
StringSetUnion: 1 人以上の管理者によって設定されたポリシーの結合として解決します(ポリシーが文字列のセットとして表現されている場合)。
TopPriority: デバイス ポリシー管理エージェントが持つロールによって定義される、以下の優先度の高い順で解決します。
  1. デバイスロックの管理者
  2. 企業の管理者
  3. その他の管理者