为Android应用

时间:2015-05-12 05:11:37

标签: android password-protection

我想在我的Android应用程序中添加4针密码保护,类似于Evernote应用程序。用户应该有一个选项来启用或禁用密码保护。但我不知道从哪里开始...

  1. 布局:我想要四个只接受数字的方框。可以使用editText是一个选项。但我对键盘不太确定。

  2. 密码存储:使用共享首选项会有效吗?

  3. 如何添加重置密码的选项?我应该为它做一个小型的网络服务吗?但是我的应用程序并不使用互联网,更像是计算器。我使用sqLite来存储数据。

    有人可以介绍一下我应该遵循的步骤吗?我的问题可能很愚蠢,但我在android中是全新的,我无助。非常感谢您的回复。谢谢

2 个答案:

答案 0 :(得分:0)

您只需要两个屏幕,一个用于设置密码,另一个用户每次打开应用程序时都会打开

  1. 在第一个屏幕中,使用自定义背景水平使用四个edittexts,这将使它们呈矩形(一个示例为this),设置输入类型“numberPassword”,这将打开数字填写并接受密码。还将每个edittext中的字符数限制为1 ..一旦用户在所有edittexts中输入值,请将它们合并。

    String pass= editText1.getText().toString()+editText2.getText().toString()+.. and so on
    
  2. 并存储在共享偏好中:

    SharedPreference sp=getSharedPreference("password",pass);
    
    1. 在第二个屏幕中进行相同的布局,当用户输入值时,再次将所有四个组合并检查存储在SharedPreference中的那个..例如:

      if(editText1.getText().toString()+editText2.getText().toString()
      +.. and so on).equals(sp.getString("password",""){
             //Intent to your main activity
        }
      
        else{
         Toast.makeText(getApplicationContext(),"Incorrect Password",Toast.LENGTH_LONG).show();
        }
      

答案 1 :(得分:-2)

我不喜欢上面的答案。您使用共享首选项保存未加密的引脚字符串,每次您要求用户输入字符串时,都应该寻找一种方法来对字符串und decryp进行加密。共享的首选项不会保存,通过对电话的物理访问,可以轻松读取针脚。 What is the most appropriate way to store user settings in Android application

“这里唯一需要关注的领域是您要保存的内容。密码始终是一件棘手的事情,我尤其要警惕将它们存储为明文。Android体系结构使得您的应用程序的SharedPreferences沙盒,以防止其他应用程序能够访问这些值,因此那里有一些安全性,但是对手机的物理访问可能会允许访问这些值。“

我使用BCrypt安全地保存了我的密码。 易于处理:

String hashpw=BCrypt(yourstring,BCrypt.gensalt());

然后按照通常的喜好保存该字符串。

要验证/输入图钉,只需执行以下操作:

If(BCrypt.checkpw(inputString,yourSharedPreference)){
//open app
}
else{
//acces denied toast
}