我使用 intent 启动设置密码活动DevicePolicyManager.ACTION_SET_NEW_PASSWORD
。当用户设置密码时,我希望收到通知(基本上我的应用程序知道为设备设置了主密码)。但是,在我的onActivityResult
函数中,RESULT_CANCELLED
当用户尝试设置新的 PIN 或字母数字密码时,我会收到一个操作。我只在 Android 4.0.4 版本中观察到这一点。有谁知道我如何找到用户是否在 ICS 上设置了 PIN 或字母数字密码?
问问题
465 次
1 回答
0
经过一番研究,我找到了这个解决方案。创建一个类来扩展android.app.admin.DeviceAdminReceiver
以侦听与设备主密码相关的任何更改。当密码发生更改时,覆盖该public void onPasswordChanged(Context context, Intent intent)
方法以接收回叫。以下代码为onPasswordChanged
我工作。
public class MyDeviceAdminReceiver extends android.app.admin.DeviceAdminReceiver {
@Override
public void onPasswordChanged(Context context, Intent intent) {
super.onPasswordChanged(context, intent);
Log.d(TAG, "onPasswordChanged:");
boolean masterPasswordEnabled = false;
ComponentName component = new ComponentName(context, MyDeviceAdminReceiver.class);
DevicePolicyManager devPolicyMan = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
// Update configuration based on actual password state on the device
if (devPolicyMan.isAdminActive(component)) {
Log.d("master_password_debug", "admin is active");
devPolicyMan.setPasswordMinimumLength(component, 1);
masterPasswordEnabled = devPolicyMan.isActivePasswordSufficient();
}
}
}
即使 resultCode 为 ,也使用 masterPasswordEnabled RESULT_CANCELLED
。
于 2012-08-01T13:20:06.243 回答