我正在开发一款应用,并希望用户必须输入密码才能进入应用主屏幕。我需要知道如何在第一次设置密码时将密码保存到xml或db,以及如何在登录时验证密码是否正确。我能得到的任何帮助将不胜感激。感谢。
答案 0 :(得分:3)
任何这些解决方案的问题是如果用户忘记他/她的密码你可以卸载并重新安装会发生什么,但是你会丢失存储在app文件夹中的那个应用程序的任何数据。为了解决这个问题,你应该使用AccountManager。
同步示例中有一个AcconutManger示例,但您需要一种验证凭据的方法。请注意,这不是一个简单的例子。
如果您对信息丢失不是问题感到高兴,那么您可以按照其他用户的建议将其保存到SharedPreferences。
您还应该查看android sdk文件夹中提供的所有示例。
答案 1 :(得分:1)
您可以使用名为sharedPreference的东西,但您可能必须加密密码并存储。
使用共享首选项检查
http://developer.android.com/guide/topics/data/data-storage.html
答案 2 :(得分:1)
你可以在android上使用SQLite数据库存储和检索数据,我建议你阅读本教程:NotePad Tutorial With Database,这是一个非常好的教程。
答案 3 :(得分:1)
使用SharedPreferences概念存储密码,并在启动应用程序时检查它。
首先在设置中保存您的详细信息。
public boolean validateLogin(String email,String password)
{
try {
SharedPreferences sharedPreferences=getApplicationContext().getSharedPreferences("UserData",Context.MODE_PRIVATE);
if(email.toLowerCase().trim().equals(sharedPreferences.getString("Email",null)) && password.trim().equals(sharedPreferences.getString("Password",null)))
{
return true;
}
else {
return false;
}
}
catch (Exception e)
{
return false;
}
}
在应用启动时检查。
#import <Foundation/Foundation.h>
NSRange makeRangeFromIndex(NSUInteger index, NSUInteger length) {
return NSMakeRange(index, length - index);
}
NSArray<NSValue *> * allLocationsOfStringMatchingSubstring(NSString *text, NSString *pattern) {
NSMutableArray *matchingRanges = [NSMutableArray new];
NSUInteger textLength = text.length;
NSRange match = makeRangeFromIndex(0, textLength);
while(match.location != NSNotFound) {
match = [text rangeOfString:pattern options:0L range:match];
if (match.location != NSNotFound) {
NSValue *value = [NSValue value:&match withObjCType:@encode(NSRange)];
[matchingRanges addObject:value];
match = makeRangeFromIndex(match.location + 1, textLength);
}
}
return [matchingRanges copy];
}
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSString *text = @"TATACCATGGGCCATCATCATCATCATCATCATCATCATCATCACAG";
NSString *pattern = @"CAT";
NSArray<NSValue *> *matches = allLocationsOfStringMatchingSubstring(text, pattern);
NSLog(@"Text: %@", text);
NSLog(@"Pattern: %@", pattern);
NSLog(@"Number of matches found: %li", matches.count);
[matches enumerateObjectsUsingBlock:^(NSValue *obj, NSUInteger idx, BOOL *stop) {
NSRange match;
[obj getValue:&match];
NSLog(@" Match found at index: %li", match.location);
}];
}
return 0;
}