如何创建登录屏幕

时间:2011-07-28 07:54:12

标签: android database login passwords

我正在开发一款应用,并希望用户必须输入密码才能进入应用主屏幕。我需要知道如何在第一次设置密码时将密码保存到xml或db,以及如何在登录时验证密码是否正确。我能得到的任何帮助将不胜感激。感谢。

4 个答案:

答案 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;
}