如何保持Android应用程序始终登录状态?

Roh*_*ith 27 android autologin

现在我正在尝试创建一个Android应用程序,假设它将是一些"X"概念没关系.所以我正在创建一个登录屏幕.我想要做的是,如果我在我的手机上登录该应用程序,它应该始终在我尝试访问该应用程序时登录.

例如我们的Facebook,g-mail和yahoo等..在我们的手机中

该怎么办?

Chi*_*rag 62

使用共享首选项进行自动登录功能.当用户登录到您的应用程序时,将登录状态存储到sharedPreference中,并在用户注销时清除sharedPreference.

如果用户进入应用程序,如果共享首选项中的用户状态为真,则无需再次登录,否则请直接登录到登录页面.

要实现这一点,首先要创建一个类,在这个类中,您需要编写有关共享首选项中的get和set值的所有函数.请看下面的代码.

public class SaveSharedPreference 
{
    static final String PREF_USER_NAME= "username";

    static SharedPreferences getSharedPreferences(Context ctx) {
        return PreferenceManager.getDefaultSharedPreferences(ctx);
    }

    public static void setUserName(Context ctx, String userName) 
    {
        Editor editor = getSharedPreferences(ctx).edit();
        editor.putString(PREF_USER_NAME, userName);
        editor.commit();
    }

    public static String getUserName(Context ctx)
    {
        return getSharedPreferences(ctx).getString(PREF_USER_NAME, "");
    }
}
Run Code Online (Sandbox Code Playgroud)

现在在主要活动("活动"中,用户将在登录时重定向)首先检查

if(SaveSharedPreference.getUserName(MainActivity.this).length() == 0)
{
     // call Login Activity
}
else
{
     // Stay at the current activity.
}
Run Code Online (Sandbox Code Playgroud)

在Login活动中,如果用户登录成功,则使用setUserName()函数设置UserName.

  • 这是非常不安全的,因为您可以在有根电话上将共享首选项作为xml文件访问 (4认同)

小智 15

您可以在SaveSharedPreference.java中为注销操作添加以下内容:

public static void clearUserName(Context ctx) 
{
    Editor editor = getSharedPreferences(ctx).edit();
    editor.clear(); //clear all stored data
    editor.commit();
}
Run Code Online (Sandbox Code Playgroud)


Pet*_*ter 9

始终和任何时候......所以这似乎是一种自动登录方式.应用程序启动后,用户在提供授权信息后无需再次登录.有几种方法可以实现这一目标.Facebook API例如提供登录机制而不使用表单元素.因此,您基本上必须构建一个视图,用户可以在其中提供一次授权信息,将它们存储在SharedPreferences中,并在下次自动登录.即使没有这样的基于API的登录,并且您必须使用提供的登录表单,您有时也可以模拟POST - 登录请求.这取决于该表单的实际服务器端实现.但请记住:这是一个安全问题.因此,永远不要以明文格式存储授权凭据.不要依赖于应用程序中定义的密钥来加密它,因为可以通过逆向工程APK来检测此密钥.而是使用关于设备的许多集体信息和用户必须输入的密钥或由应用程序随机生成和存储的密钥.