パスワード ポリシー管理者が構成され、アクティブ化されており、パスワードに最小の長さと数値を含める必要があります。
別のコード ブロックで、DevicePolicyManager.getPasswordQuality を使用してデバイスのパスワードの品質をチェックしています。
ただし、メソッドに null を渡すと、アクティブなポリシー管理者によって構成/管理されているパスワードの品質に関係なく、パスワードの品質が 0 (未指定) になります。
一方、デバイス ポリシーの管理者をコンポーネント名としてメソッド呼び出しに明示的に渡すと、正しいパスワード品質の値が得られます。
複数のデバイス管理者がアクティブ/インストールされている場合、集計されたパスワードの品質を取得できる必要があるため、これは私にとって十分ではありません。これは、API ドキュメントに従ってメソッドに null を渡すことで実現できます。
ここでの指針は、続行するのに非常に役立ちます。
私はレベル14(4.0.4)を使用しており、これはエミュレーター上にあることに注意してください。
何が機能し、何が機能しなかったかのコード スニペットを次に示します。
機能していないもの:
DevicePolicyManager dpm = (DevicePolicyManager)service.getSystemService(Context.DEVICE_POLICY_SERVICE);
List<ComponentName> list = dpm.getActiveAdmins();
ComponentName admin = null;
String strValue = null;
strValue = String.valueOf(dpm.getPasswordQuality(admin));
//strValue has 0 value indicating password quality as unspecified
//although there is one active policy requiring number type password
何がうまくいっているか:
DevicePolicyManager dpm = (DevicePolicyManager)service.getSystemService(Context.DEVICE_POLICY_SERVICE);
List<ComponentName> list = dpm.getActiveAdmins();
ComponentName admin = list.get(0);
String strValue = null;
strValue = String.valueOf(dpm.getPasswordQuality(admin));
//strValue contains 131072 indicating numberic type password
// which is what my policy sets[corresponding to component list.get(0)].
よろしく、 ディーパック