Очень поздний ответ, но у меня возникла та же проблема, и ваше исправление "Исправлено" помогло мне понять, почему.
Как вы говорите, это не очень хорошо задокументировано, поэтому может быть весьма обманчивым. Документация предполагает, что любой сбой пароля приведет к вызову onPasswordFailed.
ACTION_PASSWORD_FAILED
Действие, отправленное администратору устройства, когда пользователь ввел неправильный пароль для вызова устройства или профиля. На этом этапе вы можете проверить количество неудачных попыток ввода пароля с помощью DevicePolicyManager.getCurrentFailedPasswordAttempts (). Обычно вы будете обрабатывать это в onPasswordFailed (Context, Intent, UserHandle).
Однако это не так. onPasswordFailed, по-видимому, вызывается только тогда, когда пароль / PIN / шаблон соответствует политике по умолчанию . Это отличается от вашей минимальной длины пароля.
Хотя я не могу найти какую-либо документацию с указанием политик по умолчанию, она выглядит как 4 цифры (PIN), 4 символа (пароль) или 4 точки (шаблон). Все, что меньше этих, не вызовет вызов.
Например, установите минимальную длину 6 и установите пароль 123ABC. Теперь попробуйте войти, используя следующее: -
- 123 - onPasswordFailed не вызывается
- 123A - onPasswordFailed называется
Хороший маленький проект тестера здесь Вы можете попробовать это с помощью.
Даже если вы, вероятно, хорошо и по-настоящему ушли от этой проблемы, кто-то другой может получить некоторую ясность.
Приветствие.