编辑:
我在这里创立了我想要的东西:Password protecting my android app (the simple way)
(我有一个名为password
的TextField。如果用户输入正确的密码123
,点击按钮后我希望用户转到另一个活动。如果输入了错误的密码,应显示"Wrong password!"
之类的消息。实际密码本身位于/sdcard/Android/password.txt
的文件中。
如何创建此类功能?)
答案 0 :(得分:0)
也许您应该首先阅读一些关于Android的内容并制作初学者教程:
这将向您展示如何获取字段并访问内容: http://developer.android.com/training/basics/firstapp/building-ui.html
这个应该给你一些关于改变活动的知识: http://developer.android.com/training/basics/firstapp/starting-activity.html
答案 1 :(得分:0)
你需要在UI,安全等方面涵盖很多方面,所以我将简要介绍一下你需要完成的步骤。
您需要为UI创建活动或dialogs,获取初始密码并检查密码都应该
使用密码属性集的TextView(隐藏字符)
允许用户取消或选择附加点击监听器确定的按钮
要存储/获取密码,请使用与此类似的内容而不是sdcard和txt文件Getting a password from shared preferences,您也可以使用共享首选项编辑器来存储它。这增加了一点安全性,但不是很多
一般来说,你应该存储的不是密码本身,但你应该真正存储一个令牌以增加安全性,这里有一个类可以为你做这个
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 or startActivityForResult启动另一个活动,并查看覆盖Dialog类以执行UI位。