第二阶段冲刺02

添加密码、修改、删除密码的具体操作相关内容

代码:

 public static void requestPassword (final Activity mActivity, final PasswordValidator mPasswordValidator) {
    LayoutInflater inflater = mActivity.getLayoutInflater();
    final View v = inflater.inflate(R.layout.password_request_dialog_layout, null);
    final EditText passwordEditText = v.findViewById(R.id.password_request);

    MaterialDialog dialog = new MaterialDialog.Builder(mActivity)
        .autoDismiss(false)
        .title(R.string.insert_security_password)
        .customView(v, false)
        .positiveText(R.string.ok)
        .positiveColorRes(R.color.colorPrimary)
        .onPositive((dialog12, which) -> {
          String oldPassword = mActivity.getSharedPreferences(PREFS_NAME, MODE_MULTI_PROCESS).getString(PREF_PASSWORD, "");
          String password = passwordEditText.getText().toString();
         
          boolean result = Security.md5(password).equals(oldPassword);

          if (result) {
            KeyboardUtils.hideKeyboard(passwordEditText);
            dialog12.dismiss();
            mPasswordValidator.onPasswordValidated(PasswordValidator.Result.SUCCEED);
          } else {
            passwordEditText.setError(mActivity.getString(R.string.wrong_password));
          }
        })
        .neutralText(mActivity.getResources().getString(R.string.password_forgot))
        .onNeutral((dialog13, which) -> {
          PasswordHelper.resetPassword(mActivity);
          mPasswordValidator.onPasswordValidated(PasswordValidator.Result.RESTORE);
          dialog13.dismiss();
        })
        .build();

    dialog.setOnCancelListener(dialog1 -> {
      KeyboardUtils.hideKeyboard(passwordEditText);
      dialog1.dismiss();
      mPasswordValidator.onPasswordValidated(PasswordValidator.Result.FAIL);
    });

    passwordEditText.setOnEditorActionListener((textView, actionId, keyEvent) -> {
      if (actionId == EditorInfo.IME_ACTION_DONE) {
        dialog.getActionButton(DialogAction.POSITIVE).callOnClick();
        return true;
      }
      return false;
    });

    dialog.show();

    new Handler().postDelayed(() -> KeyboardUtils.showKeyboard(passwordEditText), 100);
  } 
 public static void resetPassword (final Activity mActivity) {
    View layout = mActivity.getLayoutInflater().inflate(R.layout.password_reset_dialog_layout, null);
    final EditText answerEditText = layout.findViewById(R.id.reset_password_answer);

    MaterialDialog dialog = new MaterialDialog.Builder(mActivity)
        .title(OmniNotes.getSharedPreferences().getString(PREF_PASSWORD_QUESTION, ""))
        .customView(layout, false)
        .autoDismiss(false)
        .contentColorRes(R.color.text_color)
        .positiveText(R.string.ok)
        .onPositive((dialogElement, which) -> {
          String oldAnswer = OmniNotes.getSharedPreferences().getString(PREF_PASSWORD_ANSWER, "");
          String answer1 = answerEditText.getText().toString();
          boolean result = Security.md5(answer1).equals(oldAnswer);
          if (result) {
            dialogElement.dismiss();
            removePassword();
          } else {
            answerEditText.setError(mActivity.getString(R.string.wrong_answer));
          }
        }).build();
    dialog.show();

    answerEditText.setOnEditorActionListener((textView, actionId, keyEvent) -> {
      if (actionId == EditorInfo.IME_ACTION_DONE) {
        dialog.getActionButton(DialogAction.POSITIVE).callOnClick();
        return true;
      }
      return false;
    });

    new Handler().postDelayed(() -> KeyboardUtils.showKeyboard(answerEditText), 100);
  }


  public static void removePassword () {
    Observable
        .from(DbHelper.getInstance().getNotesWithLock(true))
        .subscribeOn(Schedulers.newThread())
        .observeOn(AndroidSchedulers.mainThread())
        .doOnNext(note -> {
          note.setLocked(false);
          DbHelper.getInstance().updateNote(note, false);
        })
        .doOnCompleted(() -> {
          OmniNotes.getSharedPreferences().edit()
                   .remove(PREF_PASSWORD)
                   .remove(PREF_PASSWORD_QUESTION)
                   .remove(PREF_PASSWORD_ANSWER)
                   .remove("settings_password_access")
                   .apply();
          EventBus.getDefault().post(new PasswordRemovedEvent());
        })
        .subscribe();
  }
原文地址:https://www.cnblogs.com/xjmm/p/13060770.html