0

我使用 intent 启动设置密码活动DevicePolicyManager.ACTION_SET_NEW_PASSWORD。当用户设置密码时,我希望收到通知(基本上我的应用程序知道为设备设置了主密码)。但是,在我的onActivityResult函数中,RESULT_CANCELLED当用户尝试设置新的 PIN 或字母数字密码时,我会收到一个操作。我只在 Android 4.0.4 版本中观察到这一点。有谁知道我如何找到用户是否在 ICS 上设置了 PIN 或字母数字密码?

4

1 回答 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 回答