编辑:
我在这里建立了我想要的东西:密码保护我的 android 应用程序(简单的方法)
老的
(我有一个名为password
TextField在位于的文件中。123
"Wrong password!"
/sdcard/Android/password.txt
我怎样才能创建这样的功能?)
编辑:
我在这里建立了我想要的东西:密码保护我的 android 应用程序(简单的方法)
(我有一个名为password
TextField在位于的文件中。123
"Wrong password!"
/sdcard/Android/password.txt
我怎样才能创建这样的功能?)
或许你应该先阅读一点关于 Android 的知识并制作初学者教程:
这向您展示了如何获取字段并访问内容:http: //developer.android.com/training/basics/firstapp/building-ui.html
这个应该给你一些关于改变活动的知识:http: //developer.android.com/training/basics/firstapp/starting-activity.html
您需要在这里覆盖很多基础 UI、安全性等,因此我将简要概述您需要完成的步骤。
您需要 UI 的活动或对话框,获取初始密码和检查密码都应该有
使用密码属性集的TextView(隐藏字符)
允许用户取消或选择确定的按钮,并附加了点击监听器
要存储/获取密码,然后使用与此类似的东西而不是 sdcard 和 txt 文件从共享首选项获取密码,您也可以使用共享首选项编辑器来存储它。这增加了一点安全性,但不多
一般来说,您应该存储的不是密码本身,而是您应该真正存储一个令牌以增加安全性,这是一个可以为您做到这一点的类
import java.security.MessageDigest;
public class PasswordToken {
static public String makeDigest(String password)
{
String hexStr = "";
try {
MessageDigest md = MessageDigest.getInstance("SHA1");
md.reset();
byte[] buffer = password.getBytes();
md.update(buffer);
byte[] digest = md.digest();
for (int i = 0; i < digest.length; i++) {
hexStr += Integer.toString( ( digest[i] & 0xff ) + 0x100, 16).substring( 1 );
}
} catch(Exception e) // If the algo is not working for some reason on this device
// we have to use the strings hash code, which
// could allow duplicates but at least allows tokens
{
hexStr = Integer.toHexString(password.hashCode());
}
return hexStr;
}
static public boolean validate(String password, String token)
{
String digestToken = "";
String simpleToken = "";
digestToken = makeDigest(password);
if (0 == digestToken.compareTo(token))
return true;
if (0 == simpleToken.compareTo(token))
return true;
return false;
}
}
因此,当您单击确定按钮时存储密码
PasswordTextView.getText();
String token = PasswordToken.makeDigest(password);
//... store TOKEN using the shared preferences editor
当您的用户想要登录时检查密码
PasswordTextView.GetText();
String token = PasswordToken.makeDigest(password);
//... GET token using the shared preferences
if (PasswordToken.validate(token))
Start your new activity
else
tell your user to try again
您可以使用startActivity 或 startActivityForResult来启动另一个活动,并查看覆盖 Dialog 类以执行 UI 位。