Showing posts with label Content Values. Show all posts
Showing posts with label Content Values. Show all posts

Monday 3 November 2014

Android Tutorial 34 : Creating User Sign in Dialog In Android

Android Tutorials for Beginners

In this post we will develop an app in which a user can perform following task
1: User Can Create Account
2: User Can log in 

we will use and learn following this in this Post

Customized Dialog:  Here we have used  Customized Dialog   for User Login.
Creating DataBase:  Here we have created database for Storing   UserName and Password.
Writing functions for Inserting, Deleting, Updating and querying a Datbase.


we have create a Table with following Fields :

USERNAME :  to store the user name.
PASSWORD: to store the password of User

Table Name is LOGIN 


The Code is well commented  , just go through , you will understand easily.



  List of XMLs Used.



main.xml :   main screen 
signup.xml : to create a new account
login.xml  :   to login


main.xml  



                          


    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://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>


signup.xml




<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://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>



login.xml




<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://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>



Activities:


1:    HomeActivity.java


public class HomeActivity extends Activity 
{
     
    Button btnSignIn,btnSignUp;
    LoginDataBaseAdapter loginDataBaseAdapter;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
             super.onCreate(savedInstanceState);
             setContentView(R.layout.main);
             
             // create the instance of Databse
             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) {
                        // TODO Auto-generated method stub
                        
                        // 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, "Login Successfull", Toast.LENGTH_LONG).show();
                            dialog.dismiss();
                        }
                        else
                        {
                            
                            Toast.makeText(HomeActivity.this, "User Name and Does Not Matches", Toast.LENGTH_LONG).show();
                        }
                        
                    }
                });
                
            
                 dialog.show();
                
                
                
    }



    @Override
    protected void onDestroy() {
        // TODO Auto-generated method stub
        super.onDestroy();
        
        // Close The Database
        loginDataBaseAdapter.close();
    }
  
    
}

2:  SignUpActivity.java


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 Matches", 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 com.example.login;

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


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);
            }

             // Method to openthe Database  
            public  LoginDataBaseAdapter open() throws SQLException 
            {
                    db = dbHelper.getWritableDatabase();
                    return this;
            }
         
            // Method to close the Database  
            public void close() 
            {
                    db.close();
            }
  
             // method returns an Instance of the Database 
            public  SQLiteDatabase getDatabaseInstance()
            {
                    return db;
            }
    
              // method to insert a record in Table
            public void insertEntry(String userName,String password)
            {
                       
                     
                       ContentValues newValues = new ContentValues();
                        // Assign values for each column.
                        newValues.put("USERNAME", userName);
                        newValues.put("PASSWORD",password);
                       
                       
                       
                        // Insert the row into your table
                        db.insert("LOGIN", null, newValues);
                        Toast.makeText(context, "User Info Saved", Toast.LENGTH_LONG).show();
           
       
            }
           
           // method to delete a Record of UserName
            public int deleteEntry(String UserName)
            {
                     
                   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;
               
            }
       
       // method to get the password  of userName
        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
                    return "NOT EXIST";
                cursor.moveToFirst();
                String password= cursor.getString(cursor.getColumnIndex("PASSWORD"));
                return password;
               
           
        }

     // Method to Update an Existing Record 
        public void  updateEntry(String userName,String password)
        {
                //  create object of ContentValues
                ContentValues updatedValues = new ContentValues();
                // Assign values for each Column.
                updatedValues.put("USERNAME", userName);
                updatedValues.put("PASSWORD",password);
               
                String where="USERNAME = ?";
                db.update("LOGIN",updatedValues, where, new String[]{userName});
              
        }
       
       
}