Почему в SharedPreferences не сохранаются данные?

Делаю учебное приложение (менеджер паролей). При первичном запуске приложения должен запрашиваться мастер пароль и, далее, при выгрузке приложения из памяти и открытии заново ожидается, что будет запрашиваться пароль и сравниваться с мастер паролем.

Мастер пароль хочу записывать в SharedPreferences и туда же записывать пароль для сравнения. Потом в методе onDestroy обычный пароль удалять

Но сейчас у меня почему-то все сохраняется, до закрытия приложения и выгрузки его из памяти (не удаления)

Вывод в консоль такой:

        2024-08-28 13:49:47.240 27569-27569 testing_FirstRun_onResume_key_1          ru.wizand.passwordmanager            I  
        2024-08-28 13:49:47.240 27569-27569 testing_FirstRun_onResume_userPass_1     ru.wizand.passwordmanager            I  
        2024-08-28 13:49:47.275 27569-27569 testing_FirstRun_onResume_key_2          ru.wizand.passwordmanager            I  
        2024-08-28 13:49:47.275 27569-27569 testing_FirstRun_onResume_userPass_2     ru.wizand.passwordmanager            I  
        2024-08-28 13:49:47.275 27569-27569 testing_onResume_key_fromXML             ru.wizand.passwordmanager            I  
        2024-08-28 13:49:47.275 27569-27569 testing_onResume_pass_fromXML            ru.wizand.passwordmanager            I  
        2024-08-28 13:49:47.275 27569-27569 testing_Equals                           ru.wizand.passwordmanager            I  false
        2024-08-28 13:49:47.275 27569-27569 testing_stringIsNotEmpty                 ru.wizand.passwordmanager            I  false
        2024-08-28 13:49:47.275 27569-27569 testing_isAuth                           ru.wizand.passwordmanager            I  false
        2024-08-28 13:50:02.532 27569-27569 testing_onPause_key_masterKey            ru.wizand.passwordmanager            I  1HVX2Kamebuc8nx45PIcig==:T6zUv1XMjkitOKO+ayTPWKYX/TLcLtnfRFWtAtsTaLE=
        2024-08-28 13:50:02.532 27569-27569 testing_onPause_key_userPass             ru.wizand.passwordmanager            I  
        2024-08-28 13:50:02.532 27569-27569 testing_onPause_key_fromXML              ru.wizand.passwordmanager            I  
        2024-08-28 13:50:02.532 27569-27569 testing_onPause_pass_fromXML             ru.wizand.passwordmanager            I  
        2024-08-28 13:50:02.532 27569-27569 testing_isAuth                           ru.wizand.passwordmanager            I  true
        2024-08-28 13:50:02.572 27569-27569 testing_onStop_key_masterKey             ru.wizand.passwordmanager            I  1HVX2Kamebuc8nx45PIcig==:T6zUv1XMjkitOKO+ayTPWKYX/TLcLtnfRFWtAtsTaLE=
        2024-08-28 13:50:02.572 27569-27569 testing_onStop_key_userPass              ru.wizand.passwordmanager            I  
        2024-08-28 13:50:02.572 27569-27569 testing_onStop_key_fromXML               ru.wizand.passwordmanager            I  
        2024-08-28 13:50:02.572 27569-27569 testing_onStop_pass_fromXML              ru.wizand.passwordmanager            I  
        2024-08-28 13:50:09.462 27569-27569 testing_onResume_key_fromXML             ru.wizand.passwordmanager            I  
        2024-08-28 13:50:09.462 27569-27569 testing_onResume_pass_fromXML            ru.wizand.passwordmanager            I
        private String masterPassText;
        private String masterEncryptKey;
        boolean isAuthorization;
        SharedPreferences prefs;
    
        private String userPassText;
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            prefs = getSharedPreferences("ru.wizand.passwordmanager", MODE_PRIVATE);
        }
    
        @Override
        protected void onResume() {
            super.onResume();
            masterEncryptKey = "";
            userPassText = "";
            // Fetching the stored data from the SharedPreference
    
            if (prefs.getBoolean("firstrun", true)) {
                // При первом запуске (или если юзер удалял все данные приложения)
                // мы попадаем сюда. Делаем что-то
                //и после действия записывам false в переменную firstrun
                //Итого при следующих запусках этот код не вызывается.
    
                Log.i("testing_FirstRun_onResume_key_1", masterEncryptKey);
                Log.i("testing_FirstRun_onResume_userPass_1", userPassText);
    
                setupMasterPass();
    
                prefs.edit().putBoolean("firstrun", false).apply();
                userPassText = masterEncryptKey;
    
                Log.i("testing_FirstRun_onResume_key_2", masterEncryptKey);
                Log.i("testing_FirstRun_onResume_userPass_2", userPassText);
    
                // write all the data entered by the user in SharedPreference and apply
                prefs.edit().putString("key", masterEncryptKey).apply();
                prefs.edit().putString("userPassText", userPassText).apply();
    
            }
            else {
                if (!isAuthorization) {
                    checkMasterPass();
                    Log.i("testing_input_userPassText", userPassText);
                    prefs.edit().putString("testing_input_userPassText", userPassText).apply();
    
                }
    
            }
    
            String passShared = prefs.getString("userPassText", "");
            String keyShared = prefs.getString("key", "");
            Log.i("testing_onResume_key_fromXML", keyShared);
            Log.i("testing_onResume_pass_fromXML", passShared);
    
            boolean equals = userPassText.equals(masterPassText);
            Log.i("testing_Equals", Boolean.toString(equals));
    
            boolean stringIsNotEmpty = passShared != null && !keyShared.isEmpty();
    
            Log.i("testing_stringIsNotEmpty", Boolean.toString(stringIsNotEmpty));
            Log.i("testing_isAuth", Boolean.toString(isAuthorization));
    
    
        }
    
        @Override
        protected void onPause() {
            super.onPause();
    
            Log.i("testing_onPause_key_masterKey", masterEncryptKey);
            Log.i("testing_onPause_key_userPass", userPassText);
            String passShared = prefs.getString("userPassText", "");
            String keyShared = prefs.getString("key", "");
            Log.i("testing_onPause_key_fromXML", keyShared);
            Log.i("testing_onPause_pass_fromXML", passShared);
    
        }
    
        @Override
        protected void onDestroy() {
            super.onDestroy();
            isAuthorization = false;
    
            Log.i("testing_onDestroy_key_masterKey", masterEncryptKey);
            Log.i("testing_onDestroy_key_userPass", userPassText);
    
            userPassText = "";
    
            prefs.edit().putString("userPassText", userPassText).apply();
    
            String passShared = prefs.getString("userPassText", "");
            String keyShared = prefs.getString("key", "");
            Log.i("testing_onDestroy_key_fromXML", keyShared);
            Log.i("testing_onDestroy_pass_fromXML", passShared);
    
        }
    
    
    
    private void checkMasterPass() {
            // First running app and encryption the MASTERPASSWORD
            AlertDialog.Builder masterpassBuilder = new AlertDialog.Builder(this);
            masterpassBuilder.setTitle("Enter your Password");
            //Set up the input
            final EditText inputMaster = new EditText(this);
            inputMaster.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
            masterpassBuilder.setView(inputMaster);
    
            userPassText = inputMaster.getText().toString();
    
            isAuthorization = userPassText.equals(masterPassText);
    
            //Set up the buttons
            masterpassBuilder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
    
                    //Checking the input and master password
                    popupMessage(masterEncryptKey, userPassText);
    
                }
            });
    
            masterpassBuilder.show();
        }
    
    
    private void setupMasterPass() {
            // First running app and encryption the MASTERPASSWORD
            AlertDialog.Builder masterpassBuilder = new AlertDialog.Builder(this);
            masterpassBuilder.setTitle("Enter Master Password");
            //Set up the input
            final EditText inputMaster = new EditText(this);
            inputMaster.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
            masterpassBuilder.setView(inputMaster);
            //Set up the buttons
            masterpassBuilder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    masterPassText = inputMaster.getText().toString();
                    isMasterPass = true;
                    isAuthorization = true;
    
                    String key = encryptString(masterPassText);
    
                    popupMessage(masterPassText, key);
                    masterEncryptKey = key;
                }
            });
    
            masterpassBuilder.show();
        }

Ответы (0 шт):