0

インテントを使用して、パスワード設定アクティビティを起動します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 に答える