登录时从另一个活动启动应用程序

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 ---- // 登录时

您不能以这种方式更改启动器的行为。

要实现您想要做的,只需在LoginActivityonCreate(...) 方法中检查用户是否已登录。如果用户已登录,请执行以下操作...

startActivity(this, MainActivity.class);
finish();

如果用户没有登录,那么做你需要做的事情来让用户登录然后调用上面的代码。

【讨论】:

【参考方案3】:

将启动屏幕作为启动器活动,它将决定启动哪个屏幕。 即如果已登录,则转到 mainactivity 如果没有,则 loginactivity 。 mainactivity 和 login Activity 都将作为您的父 Activity 的初始屏幕。

【讨论】:

以上是关于登录时从另一个活动启动应用程序的主要内容,如果未能解决你的问题,请参考以下文章

Android:从另一个活动中注销 Facebook

从另一个应用程序启动不是主要活动

从另一个活动中删除计时器

关闭时从另一个应用程序打开 Spotify 主窗口

如何在android中启动活动时从sqlite数据库中删除所有行(数据)

允许程序特权在启动时从任何帐户更改 PC 名称?