登录时从另一个活动启动应用程序
Posted
技术标签:
【中文标题】登录时从另一个活动启动应用程序【英文标题】:Start application from another activity when logged in 【发布时间】:2014-06-18 19:03:29 【问题描述】:我的应用程序以登录活动开始,用户登录后,它重定向到MainActivity
。关键是,当用户已经登录时,我想从MainActivity
启动应用程序。而且我想从MainActivity
按下回不重定向到LoginActivity
。我将登录状态存储在共享首选项中。
为了更清楚:
Launcher -> LoginActivity -> MainActivity ---- // 未登录时
Launcher -> MainActivity ---- // 登录时
MainActivity --(按下返回按钮)--> Launcher
我已经搜索了网络和 SO 问题,因为这是一个直截了当的问题,但似乎我不知道要搜索的正确短语。请帮帮我。
【问题讨论】:
登录后使用 sharedpreferences 存储数据(它可能是用户 ID 或名称,无论您想要什么),在您的启动器中检查首选项值,如果它不等于 null,则将其重定向到您对应的活动,如果它为 null 表示将用户重定向到登录活动。 在setcontentview之前的loginactivity oncreate中检查登录状态是否为真启动mainactivity并在loginactivity的onstop中完成loginactivity 在共享首选项中存储一个用户是否登录的标志...然后在 Launcher 中放置一个 if 语句以检查是否已登录然后重定向到 MainActivity 否则重定向到登录活动...。 .. 当从 LoginActivity 转到 MainActivity 完成登录 Activity 类,以便在按下 Back 时它将从 MainActivity 返回到 Launcher ..... 如何在 Launcher 中查看标志?启动器不在我的应用程序中。启动器是指 xperia 启动器/Go 启动器之类的。 【参考方案1】:为了绕过 LoginActivity 并在您登录到 MainActivity 后转到 Launcher onBackPressed,请不要将任何历史记录放在您的清单中到您的 LoginActivity
<activity
android:name="com.your.package.LoginActivity"
android:noHistory="true" />
使用SharedPreferences
检查是否登录。
您可以在登录时设置字符串:
SharedPreferences.Editor editor = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
editor.putString("login", "yes");
editor.commit();
您可以通过像这样从 SharedPreferences 加载来检查登录值:
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
// "login","no" means default string value is "no", so if you didn't set yes after login, it will be no as default
if(preferences.getString("login", "no").equals("yes"))
//login value is yes, so start mainactivity
else
//login value is no, so start loginactivity
【讨论】:
【参考方案2】:Launcher -> LoginActivity -> MainActivity ---- // 未登录时
Launcher -> MainActivity ---- // 登录时
您不能以这种方式更改启动器的行为。
要实现您想要做的,只需在LoginActivity
的onCreate(...)
方法中检查用户是否已登录。如果用户已登录,请执行以下操作...
startActivity(this, MainActivity.class);
finish();
如果用户没有登录,那么做你需要做的事情来让用户登录然后调用上面的代码。
【讨论】:
【参考方案3】:将启动屏幕作为启动器活动,它将决定启动哪个屏幕。 即如果已登录,则转到 mainactivity 如果没有,则 loginactivity 。 mainactivity 和 login Activity 都将作为您的父 Activity 的初始屏幕。
【讨论】:
以上是关于登录时从另一个活动启动应用程序的主要内容,如果未能解决你的问题,请参考以下文章