我正在使用Android的管理API,并拥有DeviceAdminReceiver,需要重写以下函数:
@Override
public void onEnabled(Context context, Intent intent)
{
System.out.println("Admin On======================");
}
@Override
public void onDisabled(Context context, Intent intent)
{
System.out.println("Admin Off======================");
}
@Override
public void onPasswordFailed(Context context, Intent intent)
{
System.out.println("PW Bad============================");
}
@Override
public void onPasswordSucceeded(Context context, Intent intent)
{
System.out.println("PW Good===========================");
}
@Override
public void onPasswordChanged(Context context, Intent intent)
{
System.out.println("Changed PW=======================");
}
启用,禁用和密码更改功能正常,但密码失败和成功的功能不起作用。奇怪的是,它们会偶尔工作一次,然后停止工作。我的代码有问题吗,还是可能是API的问题?
在AndroidMaifest中的接收器
<receiver android:name="AdminReciever"
android:label="Administration"
android:permission="android.permission.BIND_DEVICE_ADMIN" android:enabled="true">
<meta-data android:name="android.app.device_admin"
android:resource="@xml/adminpolicies" />
<intent-filter>
<action android:name="android.app.action.ACTION_PASSWORD_SUCCEEDED"/>
<action android:name="android.app.action.ACTION_PASSWORD_FAILED"></action>
<action android:name="android.app.action.DEVICE_ADMIN_ENABLED"></action>
<action android:name="android.app.action.ACTION_PASSWORD_CHANGED"></action>
</intent-filter>
</receiver>
固定
找到了问题,看起来这并没有被记录下来。我用dpm.setPasswordMinimumLength()设置了最小密码长度。如果输入的密码长度小于最小长度,密码输入活动不会触发PASSWORD_FAILED意图。同时,只有在成功输入一个错误密码(PASSWORD_FAILED触发)之后才会触发PASSWORD_SUCCEEDED。所以连续两次成功输入的密码将不会触发第二个意图。