android - 如何记住应用程序的帐户?

时间:2016-07-26 05:48:34

标签: android

在客户端记住应用帐户的好方法是什么,因为我希望用户登录以更新其信息。但是,当用户使用该应用程序时,输入用户帐户和密码非常烦人。

在客户端存储用户帐户的唯一ID(或直接使用帐户)是否合适,以便用户每次都可以通过自动登录数据来输入帐户和密码该应用程序已激活。如果它足够安全,那么如何编写代码?请演示简单代码或代码的一部分。谢谢。

我是应用开发的初学者。什么是共享偏好以及如何编写代码?你能告诉我一些代码或网站吗?

7 个答案:

答案 0 :(得分:4)

最简单的方法是将用户详细信息存储在共享首选项中。当用户打开应用程序时,检查sharedPreference数据并启动相应的屏幕。如果您有用户详细信息,可以直接将其带到主页。如果更改了任何数据,您可以更新sharedPreference并使用该数据。

答案 1 :(得分:2)

提供复选框Remember me

将以下代码复制并粘贴到onCreate

SharedPreferences myPref = =  getSharedPreferences("APP_SHARED_PREF", Context.MODE_PRIVATE);
        String username= myPref.getString("username","");
        String password= myPref.getString("password",""); 
        isCheckedRemeber = myPref.getBoolean("checkstatus",false);

上面的代码会检查SharedPreferences

中的存储值

更改CheckBox的检查状态并将值设置为EditText(用户名,密码)

按下“登录”按钮(“登录”按钮操作)

if(isCheckedRemeber) {
            SharedPreferences.Editor editor = myPref.edit();
            editor.putString("username", username);
            editor.putString("password", password);//encript if you need to secure it
            editor.putBoolean("checkstatus", isCheckedRemeber);
            editor.commit();
        }

答案 2 :(得分:1)

是的,最好使用共享首选项在客户端存储UserID。像这样:

#include <iostream>
#include <vector>
#include <list>

using namespace std;

int main() {
    list<int> list;
    list<int>& current;
    current = list; // or just list<int>& current = list; both error
}

然后在您的首页上:

SharedPreferences prefs = a.getSharedPreferences("myData", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putString("userID", "SomeUserID");
editor.putString("userPassword", "SomeUserPass"); // think of encryption here
editor.commit();

只有root访问权限用户才能看到存储在私有应用程序存储中的文件。

答案 3 :(得分:1)

是的,最好将用户的登录凭据存储在他/她的相应设备中(一旦用户成功登录应用程序)。

为了实现这一目标,您可以使用SharedPreferences界面。 SharedPreferences用于在应用程序中存储,访问和修改首选项数据。

要创建SharedPreferences对象,您需要使用getSharedPreferences()方法,如下所示。它有两个参数:

  1. 首选项文件的名称。

  2. 您要在其中打开文件的模式。

    SharedPreferences sharedPreferences = getSharedPreferences("name", MODE_PRIVATE);

  3. 您需要SharedPreferences.Editor对象对存储在任何Preferences文件中的数据进行任何更改。创建Editor对象,如下所示。

    SharedPreferences.Editor editor = sharedPreferences.edit();
    

    现在,要将任何数据存储在Preferences文件中,我们将使用上面创建的编辑器对象。 存储到任何首选项文件的所有数据都以键和值对的形式存储。为了便于说明,我们举例说明需要将字符串“abc”存储到首选项文件中。代码如下:

    editor.putString("key", "value");
    

    请注意,您必须将所有更改提交到“首选项”文件。如果您未提交,则不会保存您的更改。提交更改:

    editor.commit();
    

    要检索String,我们需要在Preferences文件中存储String的密钥,如下所示。

    sharedPreferences.getString("key", "default_value");
    

    上述方法中的第二个参数是我们示例中的默认值。 如果任何具有指定键的首选项不存在,此方法将返回默认值。

答案 4 :(得分:1)

最简单的方法是将用户详细信息存储在共享首选项中。当您登录并获取用户名和密码时,它会以这样的共享首选项存储

SharedPreferences sp = getSharedPreferences(Constant.PREFERENCE_NAME, 0);
SharedPreferences.Editor editor = sp.edit();
editor.putString("UserName", str_userName);
editor.putString("Password", str_password);
editor.commit();

当您的应用加载时(如加载SplashScreen),您可以像这样从共享首选项中获取数据。

SharedPreferences sp1=getSharedPreferences(Constant.PREFERENCE_NAME,0);
String unm=sp1.getString("UserName", "");
String pass = sp1.getString("Password", "");

if(unm.length()>0 && pass.length()>0){
    Intent intent = new Intent(getApplicationContext(),Home.class);
    startActivity(intent);
}
else
{
    Intent intent = new Intent(getApplicationContext(),Login.class);
    startActivity(intent);
}

答案 5 :(得分:1)

正如@madhuri建议你可以使用SharedPreferences

我将以实现此功能的方式给出我的示例。

首先如何使用SharedPreferences

定义SharedPreferences

SharedPreferences sharedPreferences = getSharedPreferences("MyPrefs",
            Context.MODE_PRIVATE);

修改SharedPreferences

SharedPreferences.Editor edit= sharedPreferences.edit();
edit.putString("email", someText);
edit.putString("pass", someText);
edit.commit();

来自SharedPreferences的加脂值:

String email = sharedPreferences.getString("email", null);

现在让我们看一个示例:

我制作了一个SplashScreen来检查我的偏好是否有值。这是我的检查方式。

<强> Splash.java

SharedPreferences sharedPreferences = getSharedPreferences("MyPrefs",
            Context.MODE_PRIVATE);
String email = sharedPreferences.getString("email", null);
String pass = sharedPreferences.getString("pass", null);

if (name == null || pass == null) {
    Intent i = new Intent(SplashScreen.this, LogInPage.class);
    startActivity(i);
    overridePendingTransition(R.anim.fadein, R.anim.fadeout);
    finish();
} else {
    Intent i = new Intent(SplashScreen.this, MainActivity.class);
    startActivity(i);
    overridePendingTransition(R.anim.fadein, R.anim.fadeout);
    finish();
}

<强> LoginPage.java

现在成功登录后,您必须将值存储在SharedPreferences

if(loginSuccess){
    SharedPreferences.Editor edit= sharedPreferences.edit();
    edit.putString("email", someText);
    edit.putString("pass", someText);
    edit.commit();

    Intent i = new Intent(SplashScreen.this, MainActivity.class);
    startActivity(i);
    overridePendingTransition(R.anim.fadein, R.anim.fadeout);
    finish();
}

我希望很清楚。

快乐编码..

答案 6 :(得分:0)

将数据放入共享首选项是最有效的方法。将用户ID和密码存储在共享首选项中。打开应用程序时,只需检查sharedpref是否包含ID。如果是,则直接将文本从共享pref设置为相应的edittext。