【问题标题】:set and store password in android apps在安卓应用中设置和存储密码
【发布时间】:2026-01-28 03:50:01
【问题描述】:

我尝试为我的应用程序设置和存储密码,但它根本不起作用。密码应该第一次设置然后返回主页,然后当用户再次打开它时,密码应该被存储但不知何故它没有存储它。

PreferenceManager.getDefaultSharedPreferences(this);
    SharedPreferences passfile = getSharedPreferences("ans",0);
    String pass = passfile.getString("ans", null);

    check.setOnClickListener(new OnClickListener () {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            String answer1 = answer.getText().toString();


            //Check that user typed in an answer
            if(answer1.length()<8){
                Toast.makeText(CheckPwActivity.this, "Answer must be 8 characters long", Toast.LENGTH_SHORT).show();
                answer.setText("");
                answer.requestFocus();
                return;
            }
            answer.getEditableText().toString();
            //check if the answer is valid
            if (answer1.equals("ans")) {
                Intent intent2 = new Intent(CheckPwActivity.this,MainActivity.class);
                startActivity(intent2);


        }else{ 
            return;

        }


    }});



    }
public void setPassword(String key, String value) {
    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
    SharedPreferences.Editor editor = preferences.edit();
    Editor preferenceEditor = context.getSharedPreferences("password", 8).edit();
    preferenceEditor.putString(key, value);
    preferenceEditor.commit();
}

public static String getPassword(String filename) {
    return context.getSharedPreferences("password", 2).getString(filename,"");
}

【问题讨论】:

  • 我们如何知道您在设置/获取密码方法中使用了相同的密钥?

标签: android passwords sharedpreferences


【解决方案1】:

您使用了错误的共享首选项,在您设置的密码中,您获得了共享首选项,但随后您再次获得它,但在不同的上下文中

这就是您使用共享首选项所需的全部内容

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = preferences.edit();

然后当你想设置它时,你使用你刚刚得到的编辑器

editor.putString(key,pass).commit;

然后要从共享偏好中获取它,您只需这样做

preferences.getString(key,defaultString);

【讨论】: