2010-06-21 63 views
7

我有一个需要用户名和密码登录的android应用程序。我需要当用户打开应用程序下一次,并登录到应用程序在本地保存的用户名和密码,电话或其他地方使用它们自动不显示登陆界面如何保存android应用程序的登录细节?

EditText input1 = (EditText) findViewById(R.id.usertext); 
    EditText input2 = (EditText) findViewById(R.id.Passtext); 
    String username = input1.getText().toString(); 
    String password = input2.getText().toString(); 

如果登录成功,这将通过意向调用活动。

回答

13

+0

不错,不知道它的存在:) – RvdK 2012-09-27 12:03:02

+2

按照Android文档 “重要的是要明白的AccountManager是不加密的服务或钥匙链是非常重要的。 **它以纯文本的形式存储帐户凭证**在大多数设备上,这不是一个特别的问题,因为它将它们存储在只能由root用户访问的数据库中,但是在有根的设备上,任何具有adb设备访问权限的人都可以读取凭证“ 它相当于以普通文本形式存储密码vate SharedPreference,我建议使用任何密钥来生成md5,然后将其存储在私人SharedPreference或AccountManager中。 – 2013-10-01 16:54:11

0

如果您不关心安全性,则可以使用首选项或文件。如果你要存储它们,你应该加密密码。 请参阅here以更好地描述选项。

3

我会推荐在存储之前使用类似于MD5或SHA1的内容来散列密码。

一种可能的地方来存储如果使用ApiLevel> = 5读到AccountManager既可以是“偏好”或SQLite的DB(未这样有用的只有一个单一的数据集)

2

要保存的用户名密码&在sharepref尝试

SharedPreferences.Editor editor=mPreferences.edit(); 
private SharedPreferences mPreferences; 
mPreferences = getSharedPreferences("CurrentUser", MODE_PRIVATE); 
editor.putString("UserName", username); 
editor.putString("PassWord", password); 
editor.commit(); 
+4

Eek,请保存密码的散列,而不是密码本身...... – RvdK 2012-09-27 12:01:36

+1

这是一个非常糟糕的主意,因为任何拥有root权限(现在很容易获得)的人都可以访问它。 – 2013-09-07 16:39:29