What is the correct way to create a login / activity screen in Android?

I am working on an Android application that requires the user to log in before doing anything else. Currently, I have created the main activity with the name LoginScreen, and after successfully logging in to this action, another action called "Home" is launched. But I see a problem with this approach. What if the user clicks the back button from the home? I do not want the user to return to the login screen. which is the right way to stop the user from doing this. Do I need to handle keypress events?

+49
android android-activity login
May 2 '11 at 15:34
source share
6 answers

What I ended up with was to get my main activity to handle the android.intent.action.MAIN intent. The initial activity at startup checks whether the user has been signed or not (using the general settings), if he does not start, then he starts LoginActivity and calls finish ().

Upon successful login, LoginActivity launches the main action, and this time, since the user is logged in, the main action will continue the normal course. LoginActivity is declared as follows in the manifest file:

<activity android:name="LoginScreen" android:label="@string/app_name" android:noHistory="true" android:excludeFromRecents="true"> </activity> 

Setting noHistory and excludeFromRecents to true for LoginActivity means that the user cannot return to this action using the back button.

+46
May 05 '11 at 9:15
source share

After calling startActivity(...) in the LoginScreen activity, call finish() . This will remove this activity from the action stack, so clicking on the button will essentially close your application when you are in your home activity.

+20
May 02 '11 at 15:44
source share

LoginActivity.xml

  <?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:fitsSystemWindows="true" android:background="#263238"> <LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingTop="80dp" android:paddingLeft="16dp" android:paddingRight="16dp"> <!-- App Logo --> <ImageView android:id="@+id/logo" android:src="@drawable/logo" android:layout_width="wrap_content" android:layout_height="50dp" android:layout_marginBottom="20dp" android:layout_gravity="center_horizontal" /> <!--Title TextView--> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="STOCK BUDDY" android:id="@+id/title" android:textSize="24sp" android:textStyle="bold" android:textColor="#7B869B" android:layout_marginBottom="24dp" android:layout_gravity="center_horizontal"/> <!--User Email--> <EditText android:id="@+id/login_email" android:layout_marginTop="10dp" android:layout_marginBottom="5dp" android:layout_centerVertical="true" android:layout_width="match_parent" android:layout_height="40dp" android:ellipsize="start" android:gravity="center" android:hint="Email" android:paddingLeft="16dp" android:paddingRight="16dp" android:textColorHint="#cccccc" android:textColor="#7B869B" android:maxLength="40" android:maxLines="1" android:inputType="textEmailAddress" android:background="@drawable/edittextshape"/> <!-- User Password --> <EditText android:id="@+id/login_password" android:layout_marginTop="5dp" android:layout_marginBottom="10dp" android:layout_centerVertical="true" android:layout_width="match_parent" android:layout_height="40dp" android:ellipsize="start" android:gravity="center" android:paddingRight="16dp" android:paddingLeft="16dp" android:hint="Password" android:textColor="#7B869B" android:textColorHint="#cccccc" android:maxLength="20" android:maxLines="1" android:inputType="textPassword" android:background="@drawable/edittextshape"/> <!--Login Button--> <android.support.v7.widget.AppCompatButton android:id="@+id/btn_login" android:layout_width="fill_parent" android:layout_marginTop="5dp" android:layout_marginBottom="24dp" android:background="@drawable/buttonshape" android:text="Login" android:textSize="20sp" android:layout_height="40dp" android:textColor="#ffffff" android:shadowRadius="5" android:onClick="Login"/> <!--signup Link TextView--> <TextView android:id="@+id/link_signup" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginBottom="24dp" android:text="No account yet? Create one" android:gravity="center" android:textSize="12sp" android:textColor="#7B869B"/> </LinearLayout> </ScrollView> 

buttonshape.xml

  <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <corners android:radius="44dp" /> <gradient android:angle="45" android:centerX="35%" android:centerColor="#63D0C3" android:startColor="#70DB9A" android:endColor="#56C5EE" android:type="linear" /> <padding android:left="0dp" android:top="0dp" android:right="0dp" android:bottom="0dp" /> <stroke android:width="0dp" android:color="#878787" /> </shape> 

edittextshape.xml

  <?xml version="1.0" encoding="utf-8" ?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:thickness="0dp" android:shape="rectangle"> <solid android:color="#ffffff"/> <stroke android:width="1dp" android:color="#ffffff" /> <corners android:radius="44dp" /> </shape> 

.....................

see the full code at https://androidpugnator.wordpress.com/2017/03/12/android-login-and-signup-screens

Login screen image

+2
Mar 12 '17 at 5:44
source share

Try setting flags to intent.

Example:

 new Intent(context, SomeActivity.class).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); 



Additional checkbox information: http://developer.android.com/reference/android/content/Intent.html#nestedclasses

+1
Mar 12 '15 at 4:17
source share

Call startActivity (...) in the LoginActivity for an event (for example, click the login button). Use a separate database class to store the username and password of the user from the HomeActivity class.

Handle the onKeyDown () event to control the return button in HomeActivity (use the finish () method).

In the OnCreate () class of the LoginActivity class, use the database connection to check if the username and password exist in the database table, if so, then startActivity () is also called to directly go to HomeScreen from LoginScreen. This will not show LoginScreen.

Hope this works for you. Give it a try.

0
May 02 '11 at 17:04
source share

See: https://stackoverflow.com/a/41290453/4560689 (text below)

To do this, you must create a single launch activity with No Display (using the Android NoDisplay theme) that launches the logic for switching to the main screen or for login / registration.

First, in your manifest:

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="com.example.android"> <-- Permissions etc --> <application android:icon="@mipmap/ic_launcher" android:label="@string/app_name"> <activity android:name=".onboarding.StartupActivity" android:label="@string/app_name" android:launchMode="singleInstance" android:theme="android:style/Theme.NoDisplay"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".MainActivity" android:label="@string/app_name" android:launchMode="singleTop" /> <activity android:name=".authentication.controller.AuthenticationActivity" android:label="@string/title_sign_in" android:launchMode="singleTask" android:windowSoftInputMode="adjustResize|stateHidden" /> <-- Other activities, services, etc --> </application> 

Then your StartupActivity:

 package com.example.android.onboarding; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import com.example.android.MainActivity; import com.example.android.authentication.controller.AuthenticationActivity; import com.example.android.util.ResourceUtils; public class StartupActivity extends Activity { private static final AUTHENTICATION_REQUEST_CODE = 1000; @Override protected void onCreate(Bundle savedInstanceState) { if (isLoggedIn()) { Intent startupIntent = new Intent(this, MainActivity.class); startupIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(startupIntent); finish(); } else { Intent startupIntent = new Intent(this, AuthenticationActivity.class); startActivityForResult(startupIntent, AUTHENTICATION_REQUEST_CODE); } super.onCreate(savedInstanceState); } private boolean isLoggedIn() { // Check SharedPreferences or wherever you store login information return this.getSharedPreferences("my_app_preferences", Context.MODE_PRIVATE).getBoolean("loggedIn", false); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == AUTHENTICATION_REQUEST_CODE && resultCode == Activity.RESULT_OK) { Intent startupIntent = new Intent(this, MainActivity.class); startupIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(startupIntent); } finish(); } } 

Here: https://gist.github.com/chanakin/c44bf1c6a9a80d2640440b5aaa92c8ee

0
Dec 22 '16 at 19:35
source share



All Articles