Android Registration & Login using SQLite
Database Example:
Steps Required to Create Android Login Registration Application:
- Create a Home Screen JAVA Activity , Which will hold ‘Sign In‘ and ‘Sign Up‘ options.
- Create XML layouts for home screen and ‘Sign In‘ and ‘Sign Up‘ Screens.
- Create a SQLite Database in the application’s context, so that we can save all required user data (‘Sign In‘ and ‘Sign Up‘ details).
- Code Logic in Application’s Java files.
- Run Android Login Registration app on Device/Emulator.
Android Layouts for Login Registration Application:
main.xml :
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android" xmlns:tools="https://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:gravity="center_vertical" > <Button android:id="@+id/buttonSignIN" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Sign In" android:onClick="signIn"/> <Button android:id="@+id/buttonSignUP" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Sign Up" /> </LinearLayout>
Login.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="https://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <EditText android:id="@+id/editTextUserNameToLogin" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="User Name" android:ems="10" > <requestFocus /> </EditText> <EditText android:id="@+id/editTextPasswordToLogin" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:inputType="textPassword" android:hint="Password" /> <Button android:id="@+id/buttonSignIn" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Sign In" /> </LinearLayout>
3.signup.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="https://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:gravity="center_vertical" > <EditText android:id="@+id/editTextUserName" android:hint="User Name" android:layout_width="match_parent" android:layout_height="wrap_content" > <requestFocus /> </EditText> <EditText android:id="@+id/editTextPassword" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="Password" android:inputType="textPassword" /> <EditText android:id="@+id/editTextConfirmPassword" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="Confirm Password" android:inputType="textPassword" /> <Button android:id="@+id/buttonCreateAccount" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Create Account" android:layout_marginBottom="60dp" /> </LinearLayout>
Now Create Java Files:
We have used 4 Java files in this application. You can also find complete source code description inside the code, once you download complete code from here.
1.HomeActivity.java
package ; import android.app.Activity; import android.app.Dialog; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class HomeActivity extends Activity { Button btnSignIn,btnSignUp; LoginDataBaseAdapter loginDataBaseAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // create a instance of SQLite Database loginDataBaseAdapter=new LoginDataBaseAdapter(this); loginDataBaseAdapter=loginDataBaseAdapter.open(); // Get The Refference Of Buttons btnSignIn=(Button)findViewById(R.id.buttonSignIN); btnSignUp=(Button)findViewById(R.id.buttonSignUP); // Set OnClick Listener on SignUp button btnSignUp.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub /// Create Intent for SignUpActivity abd Start The Activity Intent intentSignUP=new Intent(getApplicationContext(),SignUPActivity.class); startActivity(intentSignUP); } }); } // Methos to handleClick Event of Sign In Button public void signIn(View V) { final Dialog dialog = new Dialog(HomeActivity.this); dialog.setContentView(R.layout.login); dialog.setTitle("Login"); // get the Refferences of views final EditText editTextUserName=(EditText)dialog.findViewById(R.id.editTextUserNameToLogin); final EditText editTextPassword=(EditText)dialog.findViewById(R.id.editTextPasswordToLogin); Button btnSignIn=(Button)dialog.findViewById(R.id.buttonSignIn); // Set On ClickListener btnSignIn.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // get The User name and Password String userName=editTextUserName.getText().toString(); String password=editTextPassword.getText().toString(); // fetch the Password form database for respective user name String storedPassword=loginDataBaseAdapter.getSinlgeEntry(userName); // check if the Stored password matches with Password entered by user if(password.equals(storedPassword)) { Toast.makeText(HomeActivity.this, "Congrats: Login Successfull", Toast.LENGTH_LONG).show(); dialog.dismiss(); } else { Toast.makeText(HomeActivity.this, "User Name or Password does not match", Toast.LENGTH_LONG).show(); } } }); dialog.show(); } @Override protected void onDestroy() { super.onDestroy(); // Close The Database loginDataBaseAdapter.close(); } }
2. SignUPActivity.Java:
package ; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class SignUPActivity extends Activity { EditText editTextUserName,editTextPassword,editTextConfirmPassword; Button btnCreateAccount; LoginDataBaseAdapter loginDataBaseAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.signup); // get Instance of Database Adapter loginDataBaseAdapter=new LoginDataBaseAdapter(this); loginDataBaseAdapter=loginDataBaseAdapter.open(); // Get Refferences of Views editTextUserName=(EditText)findViewById(R.id.editTextUserName); editTextPassword=(EditText)findViewById(R.id.editTextPassword); editTextConfirmPassword=(EditText)findViewById(R.id.editTextConfirmPassword); btnCreateAccount=(Button)findViewById(R.id.buttonCreateAccount); btnCreateAccount.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub String userName=editTextUserName.getText().toString(); String password=editTextPassword.getText().toString(); String confirmPassword=editTextConfirmPassword.getText().toString(); // check if any of the fields are vaccant if(userName.equals("")||password.equals("")||confirmPassword.equals("")) { Toast.makeText(getApplicationContext(), "Field Vaccant", Toast.LENGTH_LONG).show(); return; } // check if both password matches if(!password.equals(confirmPassword)) { Toast.makeText(getApplicationContext(), "Password does not match", Toast.LENGTH_LONG).show(); return; } else { // Save the Data in Database loginDataBaseAdapter.insertEntry(userName, password); Toast.makeText(getApplicationContext(), "Account Successfully Created ", Toast.LENGTH_LONG).show(); } } }); } @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); loginDataBaseAdapter.close(); } }
3. DataBaseHelper.Java:
package ; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; public class DataBaseHelper extends SQLiteOpenHelper { public DataBaseHelper(Context context, String name,CursorFactory factory, int version) { super(context, name, factory, version); } // Called when no database exists in disk and the helper class needs // to create a new one. @Override public void onCreate(SQLiteDatabase _db) { _db.execSQL(LoginDataBaseAdapter.DATABASE_CREATE); } // Called when there is a database version mismatch meaning that the version // of the database on disk needs to be upgraded to the current version. @Override public void onUpgrade(SQLiteDatabase _db, int _oldVersion, int _newVersion) { // Log the version upgrade. Log.w("TaskDBAdapter", "Upgrading from version " +_oldVersion + " to " +_newVersion + ", which will destroy all old data"); // Upgrade the existing database to conform to the new version. Multiple // previous versions can be handled by comparing _oldVersion and _newVersion // values. // The simplest case is to drop the old table and create a new one. _db.execSQL("DROP TABLE IF EXISTS " + "TEMPLATE"); // Create a new one. onCreate(_db); } }
4. LoginDataBaseAdapter.Java
package ; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; public class LoginDataBaseAdapter { static final String DATABASE_NAME = "login.db"; static final int DATABASE_VERSION = 1; public static final int NAME_COLUMN = 1; // TODO: Create public field for each column in your table. // SQL Statement to create a new database. static final String DATABASE_CREATE = "create table "+"LOGIN"+ "( " +"ID"+" integer primary key autoincrement,"+ "USERNAME text,PASSWORD text); "; // Variable to hold the database instance public SQLiteDatabase db; // Context of the application using the database. private final Context context; // Database open/upgrade helper private DataBaseHelper dbHelper; public LoginDataBaseAdapter(Context _context) { context = _context; dbHelper = new DataBaseHelper(context, DATABASE_NAME, null, DATABASE_VERSION); } public LoginDataBaseAdapter open() throws SQLException { db = dbHelper.getWritableDatabase(); return this; } public void close() { db.close(); } public SQLiteDatabase getDatabaseInstance() { return db; } public void insertEntry(String userName,String password) { ContentValues newValues = new ContentValues(); // Assign values for each row. newValues.put("USERNAME", userName); newValues.put("PASSWORD",password); // Insert the row into your table db.insert("LOGIN", null, newValues); ///Toast.makeText(context, "Reminder Is Successfully Saved", Toast.LENGTH_LONG).show(); } public int deleteEntry(String UserName) { //String id=String.valueOf(ID); String where="USERNAME=?"; int numberOFEntriesDeleted= db.delete("LOGIN", where, new String[]{UserName}) ; // Toast.makeText(context, "Number fo Entry Deleted Successfully : "+numberOFEntriesDeleted, Toast.LENGTH_LONG).show(); return numberOFEntriesDeleted; } public String getSinlgeEntry(String userName) { Cursor cursor=db.query("LOGIN", null, " USERNAME=?", new String[]{userName}, null, null, null); if(cursor.getCount()<1) // UserName Not Exist { cursor.close(); return "NOT EXIST"; } cursor.moveToFirst(); String password= cursor.getString(cursor.getColumnIndex("PASSWORD")); cursor.close(); return password; } public void updateEntry(String userName,String password) { // Define the updated row content. ContentValues updatedValues = new ContentValues(); // Assign values for each row. updatedValues.put("USERNAME", userName); updatedValues.put("PASSWORD",password); String where="USERNAME = ?"; db.update("LOGIN",updatedValues, where, new String[]{userName}); } }
Applications Manifest File: (XML)
hi, et login avtivity elle est ou svp !!!
How about the manifest?
give user permissions like INTERNET
Im having an error please help:(. Every time i click the Signup btn the app stop:(
I THINK YOUR FORGET TO intialize ID
It Works with a little modification
thank you!
wht is the modification please let me know
Hey Seifi, what was the modification made? … when I hit the Sign Up button, it pulls me out … did the same thing happen to you?
Hello Seifi, what modification did you do to the program so that it will work? … it takes me out of the program when I click on the sign Up … I thank you for sharing the information.
What is the modification to be made?