android - 基本安全功能

时间:2015-06-26 03:39:54

标签: android string security if-statement

我试图在我的应用程序开始时尝试最基本的安全形式,如果你输入正确的名字和姓氏,将会调用一个新的活动。

请在此处查看我的代码:

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Button buttonIntroSubmit = (Button) findViewById(R.id.button_intro);

    Intent introPass = new Intent(this, questionareActivity.class);

    buttonIntroSubmit.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            EditText firstName = (EditText) findViewById(R.id.first_name);
            EditText lastName = (EditText) findViewById(R.id.last_name);
            TextView test = (TextView) findViewById(R.id.test);

            String fullName = firstName.getText() + " " + lastName.getText();
            String password = "Mieke Snyman";

            test.setText(fullName);

            if(fullName !== password) {
                String toastPass = "Approved";
                Toast pass = Toast.makeText(getApplicationContext(), toastPass, Toast.LENGTH_LONG);
                pass.show();
            }
        }
    });
}

如果我输入" Mieke"在firstName字段和#34; Snyman"在lastName,它显示" Mieke Snyman"在测试TextView,我通过变量" fullName"分配了文本内容。但是如果我对if条件使用相同的变量,它就不会进入if。

任何想法为什么?也许是一个白色空间角色或我在if条件下缺少的东西?

2 个答案:

答案 0 :(得分:1)

http://www.tutorialspoint.com/java/java_basic_operators.htm

 if(fullName !== password) { // !== we don't have any opertor like this in java. 
                    String toastPass = "Approved";
                    Toast pass = Toast.makeText(getApplicationContext(), toastPass, Toast.LENGTH_LONG);
                    pass.show();
                }

相反,你可以这样做

if (!fullName.equals(password){


}
  

http://perso.ensta-paristech.fr/~diam/java/online/notes-java/data/expressions/22compareobjects.html

答案 1 :(得分:1)

使用.equals();代替== 所以它看起来像这样:

if (!fullName.equals(password){
String toastPass = "Approved";
                Toast pass = Toast.makeText(getApplicationContext(), toastPass, Toast.LENGTH_LONG);
                pass.show();
}

重要信息 ==测试引用相等性。 .equals()测试价值平等。

正如你所看到的 String fullNameString password的引用不同false,请注意==与基元完美匹配;仅仅因为它们不是java中字符串的对象。

More useful info

Documentation

修改

谈到安全性我可以注意到你使用String来保存密码,这在java中是一种不好的做法。

一旦你创建了一个字符串,你就无法摆脱内存中的数据,因为字符串是不可变的,所以最好使用char []