Android:根据用户是否登录更改 Activity 启动我的应用程序?

标签 android authentication sharedpreferences android-launcher

我必须像 spotify 一样开始,如果用户未登录,将显示一个屏幕,如果登录,则显示另一个屏幕,任何人都可以提供帮助吗?,谢谢。

最佳答案

试试这个代码,它可能对你有帮助。

public class SplashActivity extends Activity {
boolean isUserLoggedIn = true;
// User Session Manager Class
UserSessionManager session;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    session = new UserSessionManager(getApplicationContext());
    isUserLoggedIn = session.isUserLoggedIn();
    if(isUserLoggedIn)
    {
        Intent intent = new Intent(SplashActivity.this,FirstActivity.class);
        startActivity(intent);
        SplashActivity.this.finish();
    }
    else
    {
    setContentView(R.layout.splash_layout);
    Thread timer = new Thread(){
        public void run() {
            try
            {
                sleep(3000);
            }catch(InterruptedException e) { }
            finally
            {
                Intent intent = new Intent(SplashActivity.this,SecondActivity.class);
                startActivity(intent);
                SplashActivity.this.finish();
            }
        }
    };
    timer.start();
    }
}}

UserSessionManager 类:-

public class UserSessionManager
{
public static final String KEY_EMAIL = "email";
public static final String KEY_NAME = "name";
int PRIVATE_MODE = 0;
Context _context;
SharedPreferences.Editor editor;
SharedPreferences pref;

public UserSessionManager(Context paramContext)
{
    this._context = paramContext;
    this.pref = this._context.getSharedPreferences("AndroidPref", this.PRIVATE_MODE);
    this.editor = this.pref.edit();
}

public void createUserLoginSession(String paramString1, String paramString2)
{
    this.editor.putBoolean("IsUserLoggedIn", true);
    this.editor.putString("name", paramString1);
    this.editor.putString("email", paramString2);
    this.editor.commit();
}

public HashMap<String, String> getUserDetails()
{
    HashMap<String, String> localHashMap = new HashMap<String, String>();
    localHashMap.put("name", this.pref.getString("name", null));
    localHashMap.put("email", this.pref.getString("email", null));
    return localHashMap;
}

public boolean isUserLoggedIn()
{
    return this.pref.getBoolean("IsUserLoggedIn", false);
}

public void logoutUser()
{

}}

您可以使用 createUserLoginSession 方法设置登录详细信息。

如果您不想使用启动等待。 只需删除 SplashActivity 类中的 setContentView 方法和 Thread。

关于Android:根据用户是否登录更改 Activity 启动我的应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27752057/

相关文章:

Android Maven 找不到工具 'aapt'

android - 将土耳其语设置为文本到语音

java - 在管理应用程序中禁用强制停止按钮

java - 如何以编程方式检查某个 URL 是否需要使用 Spring Security 进行身份验证?

java - 清除 SharedPreference 中的单个变量

java - 将其他 Activity (具有两个值)的 Intent 永久保存到 ListView

javascript - 凭证更改后需要身份验证

java - 使用 OAuth 的 Google App Engine 身份验证

java - 在方法中获取 SharedPreferences 的上下文

android - 使用倾听来了解偏好变化