MiLogin: desarrollo de una mini-aplicación en Android

Page 1

MiLogin: desarrollo de una mini-aplicaci贸n en Android Un buen punto de partida en el que usamos SQLite como motro de base de datos y Eclipse como IDE de desarrollo


Índice de contenido Descripción del mini-proyecto....................................................................................................3 1. Vista inicial: main.xml............................................................................................................3 2. Vista de Login.........................................................................................................................4 3. Ventana de Sign Up (registro de usuarios)..............................................................................4 4. Ventana inicial: si pulsamos botón Sign In, se abre ventana Sign In, si pulsamos Sign Up, se abre ventana Sign Up..................................................................................................................4 Solución.............................................................................................................................5 Creamos el handler de onClick de cada botón.........................................................5 Enlazamos el evento onClick del botón con esta rutina, con este handler...............6 5. Ventana SignUp: Validar datos antes de crear cuenta de usuario............................................6 Solución.............................................................................................................................6 Handler del botón Crear cuenta................................................................................6 6. Ventana SignUp: Guardar usuario en BD...............................................................................7 Solución.............................................................................................................................7 Clase DBHelper: crearla..........................................................................................7 Clase SignUp: buttonSignUp_onClick....................................................................7 7. Ventana SignIn: Validar usuario contra BD............................................................................8 Solución.............................................................................................................................8 Clase DBHelper: agregamos método validateCredentials(username, passwod).....8 Clase SignIn: handler buttonSignIn_onClick...........................................................9


Descripción del mini-proyecto En este tutorial vamos a desarrollar un ejemplo sencillo de Login. El objetivo es comenzar a programar en Android con un ejemplo muy sencillo. La aplicación nos ofrece la siguiente funcionalidad: •

formulario de creación de usuarios, donde un usuario simplemente es un nombre y una clave

validación del formulario de creación de usuarios

almacén de los usuarios en base de datos SQLite

Validación de usuarios registrados, accediendo a base de datos para comprobar que la pareja usuario/clave es correcta.

Vamos a partir el desarrollo en micro-tareas muy sencillas. Descarga el código en https://github.com/moisespd/Android

1. Vista inicial: main.xml Lo primero que creamos es la vista inicial, main.xml Tendrá simplemente dos botones

Cambiar el Layout por LinearLayout(Vertical)

Al layout marcarle su Gravity como Center Vertically

Insertar dos botones

A cada botón, cambiarle el Text por Sign In y Sign Up


2. Vista de Login

โ ข

Atributo Hint de los campos de texto

3. Ventana de Sign Up (registro de usuarios)

4. Ventana inicial: si pulsamos botรณn Sign In, se abre ventana Sign In, si pulsamos Sign Up, se abre ventana Sign Up Tan sencillo como eso. Capturar el evento click de cada botรณn, y hacer que se muestre la ventana que corresponda.


Solución Creamos el handler de onClick de cada botón public void buttonSignIn_onClick(View v) { Intent intent = new Intent(getApplicationContext(),SignIn.class); startActivity(intent); }

public void buttonSignIn_onClick(View v) { Intent intent = new Intent(getApplicationContext(),SignIn.class); startActivity(intent); }


Enlazamos el evento onClick del botón con esta rutina, con este handler

5. Ventana SignUp: Validar datos antes de crear cuenta de usuario Simplemente, cuando pulse el botón Crear nueva cuenta nos aseguraremos que: •

El nombre de usuario no está vacío

La clave1 y clave2 no están vacías

clave1 = clave2

Solución Handler del botón Crear cuenta public void buttonCreateAccount_onClick(View v) { String userName = ((EditText)findViewById(R.id.editTextUserName)).getText().toString(); String password1 = ((EditText)findViewById(R.id.editTextPassword)).getText().toString(); String password2 = ((EditText)findViewById(R.id.editTextPassword2)).getText().toString();

if ((userName.equals("")) || (password1.equals("")) || (password2.equals(""))) { Toast.makeText(getApplicationContext(), "Theare are fields with no value. Please, fill in the information for the new account", Toast.LENGTH_LONG).show();


return; } ... }

6. Ventana SignUp: Guardar usuario en BD Si se validan los datos de usuario, almacenamos usuario en base de datos

Solución Clase DBHelper: crearla

Esta clase será la encargada de interactuar con la base de datos •

Hereda de SQLiteOpenHelper

Método onCreate, crea la tabla Login, con 3 campos: Id, username y password

Método onUpdate, simplemente elimina la tabla Template e invoca a onCreate

Método createUserAccount, es un procedimiento almacenado. Creará el String sql que se ejecuta mediante un db.insert(...)

Métodos close y open, que cierran y abren la base de datos

Tiene un atributo db de tipo SQLDataBase

Clase SignUp: buttonSignUp_onClick

Al final, cuando hemos validado que los campos son correctos, invocamos a dbHelper.CreateUserAccount(...)

public void buttonCreateAccount_onClick(View v) { String userName = ((EditText)findViewById(R.id.editTextUserName)).getText().toString(); String password1 = ((EditText)findViewById(R.id.editTextPassword)).getText().toString();


String password2 = ((EditText)findViewById(R.id.editTextPassword2)).getText().toString();

if ((userName.equals("")) || (password1.equals("")) || (password2.equals(""))) { ... ... Toast.makeText(getApplicationContext(), "Validation OK. All the information needed is correct!", Toast.LENGTH_LONG).show();

DBHelper dbHelper = new DBHelper(getApplicationContext()); dbHelper.createUserAccount(userName, password1); Toast.makeText(getApplicationContext(), "New user account inserted in Database", Toast.LENGTH_LONG).show(); }

7. Ventana SignIn: Validar usuario contra BD Desde la ventana de Sign In, probar que efectivamente, si metemos el nombre de usuario y la clave de una cuenta que hemos creado desde Sign Up, efectivamente valida que las credenciales son correctas

Solución Clase DBHelper: agregamos método validateCredentials(username, passwod)

Este método devolverá true si la pareja username-password coinciden con una entrada de la tabla Login y false en caso contrario public boolean testCredentials(String userName, String password) { openDB();

Cursor cursor = db.rawQuery( "select count(*) “ +


“from Login where Username = '" + userName + "' and Password = '" + password + "'", null);

if (cursor.getCount() < 1) { closeDB(); return false; }

cursor.moveToFirst(); if (cursor.getInt(0) != 1) { closeDB(); return false; }

closeDB(); return true; }

Clase SignIn: handler buttonSignIn_onClick

Invocamos al método testcredentials con los valores que ha insertado el usuario: public void buttonSignIn_onClick(View v) { String userName = ((EditText)findViewById(R.id.editTextUserName)).getText().toString(); String password = ((EditText)findViewById(R.id.editTextPassword)).getText().toString();

DBHelper dbHelper = new DBHelper(getApplicationContext());

if (dbHelper.testCredentials(userName, password)) { Toast.makeText(getApplicationContext(), "Validation OK!!!", Toast.LENGTH_LONG).show(); return; } Toast.makeText(getApplicationContext(), "Username and password do no match!!!", Toast.LENGTH_LONG).show(); }


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.