El documento describe el desarrollo de una aplicación Android para gestionar una agenda de contactos con acceso a una base de datos SQLite. Se crean cinco clases principales: 1) DataBaseHelper para generar la base de datos, 2) Nuevo para agregar nuevos contactos, 3) Modificar para editar contactos, 4) Eliminar para borrar contactos, y 5) Consultar para buscar, llamar o modificar contactos existentes. El código muestra cómo conectar la aplicación a la base de datos para realizar operaciones de inserción, actualización, eliminación y consulta de
1. UNIVERSIDAD TECNONOLÓGICA DEL ESTADO DE ZACATECAS
UNIDAD ACADÉMICA DE PINOS
TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN
Materia
DESARROLLO DE APLICACIONES III
Tema
APLICACIÓN ANDROID CON ACCESO A BASE DE DATOS
Nombre: Rocío Marbelín Zapata Palomo
Grado: 5 Grupo: “B”
Nombre del Docente : Eloy Contreras de Lira
Fecha de entrega : 24/03/2014
2. UNIVERSIDAD TECNONOLÓGICA DEL ESTADO DE ZACATECAS
UNIDAD ACADÉMICA DE PINOS
TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN
AGENDA ANDROID
1-. Creando la base de datos.
Para comenzar la creación de la aplicación android para dispositivos móviles es
necesario crear la base de datos, donde esta es la encargada de hacer la conexión, para
que haya comunicación entre las diferentes clases que se van a realizar.
Mostrando enseguida el código para crear la base de datos.
package proyectagenda.com;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DataBaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME="Agenda01";
public static final String NOMBRE="nombre";
public static final String TELEFONO="telefono";
public static final String EMAIL="email";
public static final String DIRECCION="direccion";
public DataBaseHelper(Context context)
{
super(context,DATABASE_NAME,null,1);
}
/** Called when the activity is first created. */
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE AgendaContactos(_id INTEGER PRIMARY KEY
AUTOINCREMENT, nombre TEXT, telefono TEXT, email TEXT,direccion TEXT);");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
android.util.Log.v("Constante", "Actualiza la base de datos y destruye la base de datos
antigua con el mismo nombre");
db.execSQL("DROP table if exists AgendaContactos");
onCreate(db);
}
}
Librerías utilizadas
para crear y abrir la
base de datos
Nombre del paquete
Declaración de
variables, las cuales
debes llenar
Con este código se crea la base de
datos llamada AgendaContactos
3. UNIVERSIDAD TECNONOLÓGICA DEL ESTADO DE ZACATECAS
UNIDAD ACADÉMICA DE PINOS
TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN
2.- Crear la clase Nuevo
A continuación se crea la primera clase llamada Nuevo, esta clase nos permitirá acceder
e ingresar nuevos contactos. Una vez que hayas ingresado algún dato este se guardara
en la base de datos ya creada.
Código de la clase Nuevo.
package proyectagenda.com;
import android.app.Activity;
import android.content.ContentValues;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
public class Nuevo extends Activity{
public EditText nombre,telefono,email,direccion;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.agregarususario);
nombre=(EditText)findViewById(R.id.nombre);
telefono=(EditText)findViewById(R.id.telefono);
direccion=(EditText)findViewById(R.id.direccion);
email=(EditText)findViewById(R.id.email);
}
private void insert(String nombre, String telefono, String email, String direccion){
DataBaseHelper dbh=new DataBaseHelper(this);
SQLiteDatabase db= dbh.getWritableDatabase();
ContentValues cv=new ContentValues();
cv.put(DataBaseHelper.NOMBRE, nombre);
cv.put(DataBaseHelper.TELEFONO, telefono);
cv.put(DataBaseHelper.EMAIL, email);
cv.put(DataBaseHelper.DIRECCION, direccion);
db.insert("AgendaContactos",DataBaseHelper.NOMBRE,cv);
db.close();
}
public void agregar(View b)
{
Nombre del paquete
Librerías aplicadas a la clase
nuevo, que son indispensables
para que la aplicación tenga
funcionamiento
Nombre de nuestra actividad
principal
Nombres de las variables
Estas líneas de código
hacen la comparación de
la declaración de
variables con el nombre
de las mismas
4. UNIVERSIDAD TECNONOLÓGICA DEL ESTADO DE ZACATECAS
UNIDAD ACADÉMICA DE PINOS
TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN
insert(nombre.getText().toString(),telefono.getText().toString(),email.getText().toString(),direccion
.getText().toString());
Toast.makeText(getApplicationContext(),
"Contacto agregado correctamente", Toast.LENGTH_LONG).show();
nombre.setText("");
email.setText("");
direccion.setText("");
telefono.setText("");
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater=getMenuInflater();
inflater.inflate(R.layout.menu1, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
Intent i;
switch (item.getItemId()) {
case R.id.item2: Intent intent = new Intent(this,AgendaAndroidActivity.class);
startActivity(intent);
break;
}
return true }
}
5. UNIVERSIDAD TECNONOLÓGICA DEL ESTADO DE ZACATECAS
UNIDAD ACADÉMICA DE PINOS
TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN
3-. Crear la clase Modificar.
La segunda clase por crear es la de modificar que tiene como función corregir los datos
que no se ocupen, o si hay algún dato que se haya cambiado, para eso utilizamos el
método modificar().
A continuación el código de la clase modificar.
package proyectagenda.com;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
public class Modificar1 extends Activity{
public EditText nombre;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.modificarcontacto);
nombre=(EditText)findViewById(R.id.nombre);
}
public void modificar(View b)
{
DataBaseHelper dbh=new DataBaseHelper(this);
SQLiteDatabase db= dbh.getWritableDatabase();
String[] campos = new String[] {"nombre"};
String[] args = new String[] {nombre.getText().toString()};
Cursor c = db.query("AgendaContactos", campos, "nombre=?", args, null, null, null);
//Nos aseguramos de que existe al menos un registro
if (c.moveToFirst()) {
Intent it=new Intent(this,Modificar2.class);
it.putExtra("nombre", nombre.getText().toString());
startActivity(it);
}
6. UNIVERSIDAD TECNONOLÓGICA DEL ESTADO DE ZACATECAS
UNIDAD ACADÉMICA DE PINOS
TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN
else
{
Toast.makeText(getApplicationContext(),
"El contacto especificado no existe.!", Toast.LENGTH_LONG).show();
db.close();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater=getMenuInflater();
inflater.inflate(R.layout.menu1, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
Intent i;
switch (item.getItemId()) {
case R.id.item2: Intent intent = new Intent(this,AgendaAndroidActivity.class);
startActivity(intent);
break;
}
return true;
}
}
7. UNIVERSIDAD TECNONOLÓGICA DEL ESTADO DE ZACATECAS
UNIDAD ACADÉMICA DE PINOS
TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN
4-.Crear la clase Eliminar
La tercera clase por crear es la de eliminar y para que se cumpla esta función es
necesario crear y utilizar el método Delete();
Donde su misión es borrar los datos o contactos que no se ocupen.
Mostrando enseguida el código de dicha clase.
package proyectagenda.com;
import android.app.Activity;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
public class EliminarContacto extends Activity{
EditText nombre;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.eliminarcontacto);
nombre=(EditText)findViewById(R.id.nombre);
}
public void eliminar(View b)
{
DataBaseHelper dbh=new DataBaseHelper(this);
SQLiteDatabase db= dbh.getWritableDatabase();
String[] args = new String[]{nombre.getText().toString()};
db.execSQL("DELETE FROM AgendaContactos WHERE nombre=?", args);
Toast.makeText(getApplicationContext(),
"Contacto eliminado con exito.!", Toast.LENGTH_LONG).show();
db.close();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater=getMenuInflater();
inflater.inflate(R.layout.menu1, menu);
return true;
}
8. UNIVERSIDAD TECNONOLÓGICA DEL ESTADO DE ZACATECAS
UNIDAD ACADÉMICA DE PINOS
TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN
@Override
public boolean onOptionsItemSelected(MenuItem item) {
Intent i;
switch (item.getItemId()) {
case R.id.item2: Intent intent = new Intent(this,AgendaAndroidActivity.class);
startActivity(intent);
break;
}
return true;
}
}
5-.Crear la clase Consultar.
En la siguiente clase llamada consultar es la encargada de buscar algún contacto, ya sea
para llamarle, borrarlo o hacerle una modificación.
Enseguida el código
package proyectagenda.com;
import proyectagenda.com.R;
import proyectagenda.com.buscar;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
public class buscar extends Activity{
public EditText nombre;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.buscarcontacto);
nombre=(EditText)findViewById(R.id.nombre);
}
9. UNIVERSIDAD TECNONOLÓGICA DEL ESTADO DE ZACATECAS
UNIDAD ACADÉMICA DE PINOS
TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN
public void buscar(View b)
{
DataBaseHelper dbh=new DataBaseHelper(this);
SQLiteDatabase db= dbh.getWritableDatabase();
String[] campos = new String[] {"nombre"};
String[] args = new String[] {nombre.getText().toString()};
Cursor c = db.query("AgendaContactos", campos, "nombre=?", args, null, null, null);
if (c.moveToFirst()) {
Intent it=new Intent(this,Detalle.class);
it.putExtra("nombre", nombre.getText().toString());
startActivity(it);
}
else
{
Toast.makeText(getApplicationContext(),
"El contacto especificado no existe.!", Toast.LENGTH_LONG).show();
db.close();
}
public String recuperanum()
{
String numero="";
DataBaseHelper dbh=new DataBaseHelper(this);
SQLiteDatabase db= dbh.getWritableDatabase();
String[] campos = new String[] {"telefono"};
String[] args = new String[] {nombre.getText().toString()};
Cursor c = db.query("AgendaContactos", campos, "nombre=?", args, null, null, null);
if (c.moveToFirst()) {
do {
String telefono = c.getString(0);
numero=telefono;
} while(c.moveToNext());
}
else
{
Toast.makeText(getApplicationContext(),
"Ha ocurrido un error :(", Toast.LENGTH_LONG).show();
db.close();
}
return numero;
}
public void llamar(View b)
{
DataBaseHelper dbh=new DataBaseHelper(this);
SQLiteDatabase db= dbh.getWritableDatabase();
String[] campos = new String[] {"nombre"};
String[] args = new String[] {nombre.getText().toString()};
Cursor c = db.query("AgendaContactos", campos, "nombre=?", args, null, null, null);
10. UNIVERSIDAD TECNONOLÓGICA DEL ESTADO DE ZACATECAS
UNIDAD ACADÉMICA DE PINOS
TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN
if (c.moveToFirst()) {
AlertDialog.Builder alertDialog = new AlertDialog.Builder(buscar.this);
alertDialog.setMessage("¿Desea realizar la llamada al contacto?");
alertDialog.setTitle("Llamar a contacto...");
alertDialog.setIcon(android.R.drawable.ic_dialog_alert);
alertDialog.setCancelable(false);
alertDialog.setPositiveButton("SI", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int which)
{
try
{
String numero=recuperanum();
String number = "tel:" + numero.trim();
Toast.makeText(getApplicationContext(),
"Llamando al " + numero.trim(), Toast.LENGTH_LONG).show();
Intent callIntent = new Intent(Intent.ACTION_CALL, Uri.parse(number));
startActivity(callIntent);
}
catch (Exception e)
{
Toast.makeText(getApplicationContext(),
"No se ha podido realizar la llamada", Toast.LENGTH_LONG).show();
}
}
});
alertDialog.setNegativeButton("No", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int which)
{
Toast.makeText(getApplicationContext(),
"Llamada cancelada", Toast.LENGTH_LONG).show();
}
});
alertDialog.show();
}
else
{
Toast.makeText(getApplicationContext(),
"El contacto especificado no existe.!", Toast.LENGTH_LONG).show();
db.close();
}}