DevicePolicyManager.resetPasswordWithToken выбрасывает NPE

#android #kotlin #device-admin

#Android #kotlin #устройство-администратор

Вопрос:

Я использую это так:

             devicePolicyManager
                .resetPasswordWithToken(
                    componentName,
                    nonNullOrEmptyPassword,
                    nonNullOrEmptyByteArray,
                    0
                )
  

И он выдает NPE:

 java.lang.NullPointerException: Attempt to get length of null array
        at android.os.Parcel.createException(Parcel.java:2094)
        at android.os.Parcel.readException(Parcel.java:2056)
        at android.os.Parcel.readException(Parcel.java:2004)
        at android.app.admin.IDevicePolicyManager$Stub$Proxy.resetPasswordWithToken(IDevicePolicyManager.java:15625)
        at android.app.admin.DevicePolicyManager.resetPasswordWithToken(DevicePolicyManager.java:3959)
  

Android 10, Samsung A51, приложение является владельцем устройства. Что не так?

Ответ №1:

Вероятно, внутренняя реализация устанавливает токен в значение null, если пользователь не является администратором на устройстве. Проверьте, что возвращает функция isResetPasswordTokenActive().

Комментарии:

1. Он возвращает false, setResetPasswordToken() возвращает true, но если я вызываю isResetPasswordTokenActive() после этого, он все равно возвращает false .