Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android应用程序存储和调用用户名和密码_Java_Android - Fatal编程技术网

Java Android应用程序存储和调用用户名和密码

Java Android应用程序存储和调用用户名和密码,java,android,Java,Android,我有一个要创建登录活动的应用程序。我有 1) 登录(按钮) 2) 用户ID(编辑文本) 3) 密码(编辑文本) 我想将用户名和密码存储在设备的内部存储器中。如何创建SharedReferences从中提取的文件并对其进行加密 login_Button.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { SharedP

我有一个要创建登录活动的应用程序。我有 1) 登录(按钮) 2) 用户ID(编辑文本) 3) 密码(编辑文本)

我想将用户名和密码存储在设备的内部存储器中。如何创建SharedReferences从中提取的文件并对其进行加密

login_Button.setOnClickListener(new View.OnClickListener(){

        @Override
        public void onClick(View v) {

            SharedPreferences userDetails = getSharedPreferences("userdetails", MODE_PRIVATE);
            SharedPreferences.Editor edit = userDetails.edit();
            edit.clear();

            if(etUserID.getText().toString().equals("")){
                Toast.makeText(getApplicationContext(),"Please enter a User ID", Toast.LENGTH_LONG).show();
            }else if (etPassword.getText().toString().equals("")){
                Toast.makeText(getApplicationContext(),"Please enter a password", Toast.LENGTH_LONG).show();
            }else{
                edit.putString("userID", txtUID.getText().toString().trim());
                edit.putString("password", txtPass.getText().toString().trim());
                edit.commit();
            }



        }
    });
txtid和txtPass显示为红色,当我删除它时,系统会说getText是错误的

这是我第一次使用验证器。我在android开发页面上找到了一个名为PasswordAuthentication的东西,但我还没有找到任何教程或代码

SharedPreferences userDetails = getSharedPreferences("userdetails", MODE_PRIVATE);
    String UID = userDetails.getString("userID", "");
    String pass = userDetails.getString("password", "");

    if (userDetails.contains("userID")||userDetails.contains("password")){
        startActivity(new Intent(LogOn.this,CrimeMap.class));
    }
我用于研究的资料来源:

更新:

好的,这是我的更新代码。如果我没有输入用户ID或密码,则会触发我的语句。但是,当我输入正确的用户ID和密码时,程序不会转到下一个活动。我先让它运行,然后再加密它

@凌驾 创建时受保护的void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity\u logon)

更新:

我终于明白了!谢谢你的帮助!这是我这部分项目的完整代码。我还没有加密它,但我想我会休息一下,稍后再回来。谢谢你的帮助

     @Override
        public void onClick(View v) {

            int uid = 1155;
            String pass = "pass";

            SharedPreferences userDetails = getSharedPreferences(User_File, MODE_PRIVATE);
            SharedPreferences.Editor edit = userDetails.edit();

            edit.putInt("userID", uid);
            edit.putString("password", pass);
            edit.commit();


            if((etUserID.getText().toString().equals(""))){
                Toast.makeText(getApplicationContext(),"Please enter a User ID", Toast.LENGTH_LONG).show();
            }else if (etPassword.getText().toString().equals("")){
                Toast.makeText(getApplicationContext(),"Please enter a password", Toast.LENGTH_LONG).show();
            }else{
                String user_id = etUserID.getText().toString();
                int user_id2 = Integer.parseInt(user_id);
                String user_password = etPassword.getText().toString();

                int userID = userDetails.getInt("userID", 1);
                String password = userDetails.getString("password", "no name");

                if (userID == user_id2 && password.equals(user_password)){
                    startActivity(new Intent(LogOn.this,CrimeMap.class));
                }
            }

不要尝试访问该文件。让android来做,并将存储的数据加密到共享首选项。我的意思是:

  edit.putString("userID", encrypt(txtUID.getText().toString().trim()));
  edit.putString("password", encrypt(txtPass.getText().toString().trim()));
您可以使用任何您喜欢的加密,当然您需要以这种方式对其进行解码

另一个选项是存储SHA1加密密码,在身份验证中,您可以将键入的SHA1加密密码与存储的字符串进行比较。例如,您可以使用:

String sha1Password = DigestUtils.sha1Hex(password);
edit.putString("sha1Password", encrypt(sha1Password);

要解决“红色”问题,您需要声明txtid,txtPass。它们应该以某种方式添加到您的布局中。可能通过编辑布局xml。但即使是以编程方式,您也可以这样做,例如:

您是否直接访问共享首选项以创建包含用户名和密码的文件?现在我正在查看“解析”和SharedReferences。软件公司是否使用了“parse”?来源:1.不,您已经拥有的上述代码确实负责存储。2.我不理解关于parse的问题。是的,它被使用了,它们对每个用例都有定价,但这与您最初的问题有什么关系?sha1不是一个加密算法。
String sha1Password = DigestUtils.sha1Hex(password);
edit.putString("sha1Password", encrypt(sha1Password);