如何保存android应用程序的登录详细信息?

Posted

技术标签:

【中文标题】如何保存android应用程序的登录详细信息?【英文标题】:how to save login details of android app? 【发布时间】:2010-06-21 14:12:28 【问题描述】:

我有一个需要用户名和密码才能登录的安卓应用程序。我需要将用户名和密码保存在手机本地或其他地方,以便用户下次打开应用程序并自动登录应用程序而不显示登录屏幕时使用它们

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

如果登录成功,会通过intent调用activity。

【问题讨论】:

【参考方案1】:

如果您使用的是 ApiLevel >= 5,请阅读 AccountManager。

【讨论】:

很好,不知道它存在 :) 根据 android 文档“重要的是要了解 AccountManager 不是加密服务或钥匙串。它会在您传递帐户凭据时以纯文本形式存储它们。大多数设备,这不是一个特别的问题,因为它将它们存储在一个只能由 root 访问的数据库中。但是在一个有 root 权限的设备上,任何对设备具有 adb 访问权限的人都可以读取凭据“这相当于存储私人 SharedPreference 中的纯文本密码,我建议使用任何密钥生成 md5,然后将其存储在私人 SharedPreference 或 AccountManager 中。【参考方案2】:

我建议在存储之前使用 MD5 或 SHA1 之类的方法对您的密码进行哈希处理。

可能的存储位置可以是“首选项”或 sqlite DB(仅对单个数据集没有那么有用)

【讨论】:

【参考方案3】:

要在 sharepref 中保存用户名和密码尝试

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

【讨论】:

这是一个非常糟糕的主意,因为任何拥有 root 权限的人都可以访问它(现在很容易获得)。【参考方案4】:

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

【讨论】:

以上是关于如何保存android应用程序的登录详细信息?的主要内容,如果未能解决你的问题,请参考以下文章

Android - 保存登录详细信息

Android登录后的用户数据如何保存,Android如何保存数据

如何获取保存的卡详细信息razorpay android

如何通过 Android 在 Paypal 保险库中保存信用卡详细信息以及如何检索它们以供将来使用

登录页面不保存用户的详细信息,必须一次又一次登录

如何使用共享首选项让用户保持登录状态?