Utilizamos cookies propias y de terceros. Al navegar entendemos que aceptas el uso de cookies. +Info.
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Proponer
· Temas
· Top 10
· Trucos
· Tutoriales
· Usuario
· Wiki

Nick


Contraseña


Nuevo usuario


English

SQLite: Desarrollar aplicación Android con acceso a base de datos SQLite con Eclipse
Android


Mostramos paso a paso con código fuente Java (Eclipse y Android) cómo desarrollar una aplicación que acceda a base de datos SQLite para dispositivos Android. Explicamos cómo crear mensajes de confirmación, cómo hacer una llamada a un contacto, cómo crear una base de datos SQLite, cómo eliminar una base de datos SQLite y cómo insertar registros en una base de datos SQLite desde nuestro dispositivo Android. Incluimos código fuente de la aplicación AjpdSoft Agenda Telefónica Android.



 

 

Android

Android es un sistema operativo basado en Linux para dispositivos móviles, como teléfonos inteligentes y tablets. Fue desarrollado inicialmente por Android Inc., una firma comprada por Google en 2005. Es el principal producto de la Open Handset Alliance, un conglomerado de fabricantes y desarrolladores de hardware, software y operadores de servicio.

Android tiene una gran comunidad de desarrolladores escribiendo aplicaciones para extender la funcionalidad de los dispositivos. Hasta la fecha, existen cerca de 200.000 aplicaciones disponibles para Android. Android Market es la tienda de aplicaciones en línea administrada por Google, aunque existe la posibilidad de obtener software externamente. Los programas están escritos en el lenguaje de programación Java.

Google liberó la mayoría del código de Android bajo la licencia Apache, una licencia libre y de código abierto. Actualmente Android posee el 32,9% de cuota de mercado a escala mundial de los teléfonos inteligentes, por delante de Symbian OS que tiene 30,6%. En tercer lugar se sitúa Apple con cuota de mercado del 16%.

La estructura del sistema operativo Android se compone de aplicaciones que se ejecutan en un framework Java de aplicaciones orientadas a objetos sobre el núcleo de las bibliotecas de Java en una máquina virtual Dalvik con compilación en tiempo de ejecución. Las bibliotecas escritas en lenguaje C incluyen un administrador de interfaz gráfica (surface manager), un framework OpenCore, una base de datos relacional SQLite, una API gráfica OpenGL ES 2.0 3D, un motor de renderizado WebKit, un motor gráfico SGL, SSL y una biblioteca estándar de C Bionic. El sistema operativo está compuesto por 12 millones de líneas de código, incluyendo 3 millones de líneas de XML, 2,8 millones de líneas de lenguaje C, 2,1 millones de líneas de Java y 1,75 millones de líneas de C++.

Las versiones de Android reciben nombre de postres en inglés. En cada versión el postre elegido empieza por una letra distinta siguiendo un orden alfabético:

  • C: Cupcake (v1.5), magdalena glaseada.
  • D: Donut (v1.6), rosquilla.
  • E: Éclair (v2.0/v2.1), pastel francés conocido en España como pepito o canuto.
  • F: Froyo (v2.2), (abreviatura de «frozen yogurt») yogur helado.
  • G: Gingerbread (v2.3), pan de jengibre.
  • H: Honeycomb (v3.0), panal de miel.

 

Requisitos iniciales para desarrollar aplicaciones para dispositivos Android

A continuación mostramos un artículo donde explicamos cómo instalar Eclipse, el IDE de desarrollo que usaremos para realizar aplicaciones para dispositivos Android. Además, en este artículo explicamos cómo instalar el SDK de Android tanto en el equipo como en Eclipse. Explicamos cómo preparar un equipo con Linux Ubuntu para que sirva como plataforma de desarrollo de aplicaciones para dispositivos Android:

Mi primera aplicación Android con Eclipse en Linux, instalar Eclipse Ubuntu

 

Desarrollar aplicación Android con acceso a base de datos SQLite

Abriremos el IDE de desarrollo Eclipse, accederemos al menú "File" - "New" - "Project":

Desarrollar aplicación Android con acceso a base de datos SQLite

Seleccionaremos "Android" - "Android Project" y pulsaremos "Next":

Desarrollar aplicación Android con acceso a base de datos SQLite

Introduciremos los datos del nuevo proyecto Android:

  • Project name: AjpdSoftAgendaTelefonicaAndroid.
  • Contents: marcaremos "Create new project in workspace" y marcaremos "Use default location".
  • En Build Target marcaremos "Android 2.3.3".

Desarrollar aplicación Android con acceso a base de datos SQLite

  • Application name: "AjpdSoft Agenda Telefonica Android".
  • Package name: "agendatelefonica.agenda".
  • Marcaremos "Create Activity" e introduciremos "agenda".

Pulsaremos "Finish":

Desarrollar aplicación Android con acceso a base de datos SQLite

En primer lugar crearemos el entorno visual de la aplicación, añadiremos dos cuadros de texto para introducir el teléfono y el nombre del contacto y añadiremos tres botones: añadir contacto, llamar al contacto y eliminar base de datos. Para ello accederemos en el Package Explorer a "res" luego a "layout" y haremos doble click en "main.xml":

Desarrollar aplicación Android con acceso a base de datos SQLite

El fichero "main.xml" contendrá en formato XML los componentes visuales de nuestra aplicación Android, desde aquí especificaremos los elementos que verá el usuario de nuestra aplicación Android. Por ejemplo, para añadir un Label (etiqueta de texto) introduciremos:

	

Para añadir un cuadro de edición de texto usaremos:

	

Para añadir un botón usaremos:

	
 

La propiedad más importante, de cara a programar y usar cada elemento, es "android:id" donde especificaremos el nombre que tendrá cada componente, para poder usarlo en el código.

En el siguiente enlace publicamos el código fuente completo en Eclipse de la aplicación para dispositivos Android AjpdSoft Agenda Telefónica Android, donde incluimos el fichero del layout main.xml:

AjpdSoft Agenda Telefónica Android

Aunque el proceso de añadir componentes visuales pueda parecer un poco engorroso, las aplicaciones para dispositivos móviles no suelen tener muchos componentes visuales, como es lógico dado su uso y espacio en pantalla. Deben ser aplicaciones muy prácticas y con pocos elementos visuales.

Desarrollar aplicación Android con acceso a base de datos SQLite

En la parte inferior de la ventana anterior, pulsando en "Graphical Layout" podremos ir viendo cómo queda visualmente la aplicación, es una aproximación, para ver cómo quedaría en un dispositivo móvil Android deberemos compilar la aplicación y usar el emulador. Para volver al modo edición pulsaremos (en la parte inferior) en "main.xml". En nuestro caso hemos añadido los siguientes componentes visuales:

  • TextView: etiqueta de texto para mostrar "Introducción de datos".
  • EditText: cuadro de texto para que el usuario introduzca el nombre del contacto.
  • EditText: cuadro de texto para que el usuario introduzca el número de teléfono del contacto.
  • Button: botón para insertar un contacto a la base de datos agenda.
  • Button: botón para llamar al contacto actual, realizará una llamada telefónica al número de teléfono actual.
  • Button: botón para eliminar la base de datos completa.
  • Button: botón para cerrar la aplicación.

Desarrollar aplicación Android con acceso a base de datos SQLite

Antes de añadir código a cada botón podremos probar cómo quedarían los componentes visuales en el emulador (un dispositivo Android virtual, casi como si de un móvil Android físico se tratara). Sin duda este emulador se convertirá en una herramienta fundamental para poder probar el resultado de nuestras aplicaciones sin necesidad de estar instalándolas contínuamente en un dispositivo Android físico. Para compilar la aplicación pulsaremos en el menú "Run" - "Run" (ó pulsando las teclas Control + F11):

Desarrollar aplicación Android con acceso a base de datos SQLite

En la ventana de "Run As" seleccionaremos "Android Application" y pulsaremos "OK":

Desarrollar aplicación Android con acceso a base de datos SQLite

Si hemos activado el emulador (como indicamos aquí) se iniciará el AVD y se ejecutará automáticamente nuestra aplicación. En esta primera compilación los botones de "Insertar contacto", "Llamar al contacto", "Eliminar BD" y "Cerrar aplicación" no tendrán efecto aún, pues no los hemos programado, aunque ya podremos ver cómo va quedando nuestra aplicación en un dispositivo Android:

Desarrollar aplicación Android con acceso a base de datos SQLite

Volveremos a nuestra aplicación, no recomendamos cerrar el emulador pues tarda unos segundos en cargarse, si lo dejamos abierto, con la aplicación cerrada, cuando volvamos a compilarla la carga será muchísimo más rápida.

Desde nuestra aplicación Android, añadiremos ahora el código fuente Java para cada botón que hemos añadido en el layout, para ello abriremos el Package Explorer, pulsaremos en "sr", luego en "agendatelefonica.agenda" (package de la aplicación) y haremos doble clic en "agenda.java":

Desarrollar aplicación Android con acceso a base de datos SQLite

Añadiremos el siguiente código en el fichero agenda.java:

  • Definiremos el package con:

    package agendatelefonica.agenda;

  • A continuación declararemos los import para usar las clases Android que necesitaremos para nuestra aplicación:

    import android.app.Activity;
    import android.os.Bundle;
    import android.content.ContentValues;
    import android.database.sqlite.SQLiteDatabase; //para conexión a base de datos SQLite
    import android.widget.EditText; //para usar cuadros de texto
    import android.widget.Button; //para usar botones
    import android.widget.Toast; //para mostrar mensajes "emergentes"
    import android.util.Log;
    import android.view.View;
    import android.content.Intent;
    import android.net.Uri; //para llamar a un número de teléfono
    import android.app.AlertDialog; //para mostrar mensaje de confirmación
    import android.content.DialogInterface;

  • Declararemos la clase, el activity, las variables que usaremos y ejecutaremos el layout con:
    public class agenda extends Activity 
    {
      EditText editNombre,editTelefono;
      private Button botonGuardar;
      private Button botonLlamar;
      private Button botonEliminarBD;
      private Button botonCerrar;  
    	 
      private SQLiteDatabase baseDatos;   
      private static final String TAG = "bdagenda";   
      private static final String nombreBD = "agenda";   
      private static final String tablaContacto = "contacto";  
    	
      //guardamos en un String toda la creación de la tabla        
      private static final String crearTablaContacto = "create table if not exists "  
    	  + " contacto (codigo integer primary key autoincrement, "  
    	  + " nombre text not null, telefono text not null unique);";   
    	
      @Override
      public void onCreate(Bundle savedInstanceState) 
      { 
        //Asignamos a cada objeto visual creado a su respectivo elemento de main.xml           
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        editNombre   = (EditText) findViewById(R.id.txtNombre);   
        editTelefono = (EditText) findViewById(R.id.txtTelefono); 
        botonGuardar = (Button) findViewById(R.id.btGuardar);
        botonLlamar = (Button) findViewById(R.id.btLlamar);
        botonEliminarBD = (Button) findViewById(R.id.btEliminarBD);
        botonCerrar = (Button) findViewById(R.id.btCerrar);  
  • Código asignado al botón Guarda Contacto:
    //Guardar el contacto actual en la agenda
    botonGuardar.setOnClickListener(new View.OnClickListener() 
    {
      public void onClick(View v) 
      {
        //Abrir la base de datos, se creará si no existe             		
        abrirBasedatos();

        //Insertar una fila o registro en la tabla "contacto"
        //si la inserción es correcta devolverá true     
        boolean resultado = insertarFila(editNombre.getText().toString(), 
        editTelefono.getText().toString());
        if(resultado) 
          Toast.makeText(getApplicationContext(), 
        		  "Contacto añadido correctamente", Toast.LENGTH_LONG).show();
        else 
          Toast.makeText(getApplicationContext(), 
        		  "No se ha podido guardar el contacto" ,   Toast.LENGTH_LONG).show();             		
      }
    });
  • Código para llamar al contacto actual por teléfono:
    //Llamar al contacto actual por teléfono
    botonLlamar.setOnClickListener(new View.OnClickListener() 
    {
      public void onClick(View v) 
      {        
    	//Mostrar un mensaje de confirmación antes de realizar la llamada  
    	AlertDialog.Builder alertDialog = new AlertDialog.Builder(agenda.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("Sí", new DialogInterface.OnClickListener() 
        {
          public void onClick(DialogInterface dialog, int which) 
          {
            try 
            {          			 
              EditText num=(EditText)findViewById(R.id.txtTelefono); 
              String number = "tel:" + num.getText().toString().trim();
              Toast.makeText(getApplicationContext(), 
            		  "Llamando al " + num.getText().toString().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();
      } 
    });
  • Código del botón eliminar base de datos:
    //Eliminar la base de datos de la agenda
    botonEliminarBD.setOnClickListener(new View.OnClickListener() 
    {
      public void onClick(View v) 
      {
        //Mostrar un mensaje de confirmación antes de eliminar la base de datos  
      	AlertDialog.Builder alertDialog = new AlertDialog.Builder(agenda.this);
      	alertDialog.setMessage("¿Desea eliminar la base de datos por completo?");
      	alertDialog.setTitle("Eliminar agenda...");
      	alertDialog.setIcon(android.R.drawable.ic_dialog_alert);
      	alertDialog.setCancelable(false);
      	alertDialog.setPositiveButton("Sí", new DialogInterface.OnClickListener() 
          {
            public void onClick(DialogInterface dialog, int which) 
            {
              try 
              {  
                  Toast.makeText(getApplicationContext(), 
                		  "Eliminando base de datos: " + nombreBD, Toast.LENGTH_LONG).show();
                  boolean resultado = deleteDatabase(nombreBD);
                  if(resultado) 
                    Toast.makeText(getApplicationContext(), 
                    	  "Base de datos eliminada correctamente", Toast.LENGTH_LONG).show();
                    else 
                      Toast.makeText(getApplicationContext(), 
                    	  "No se ha podido eliminar la base de datos", Toast.LENGTH_LONG).show();            	  
              } 
              catch (Exception e) 
              {
                Toast.makeText(getApplicationContext(), 
              		  "No se ha podido eliminar la base de datos", Toast.LENGTH_LONG).show();
              }
            } 
          }); 
          alertDialog.setNegativeButton("No", new DialogInterface.OnClickListener() 
          {
            public void onClick(DialogInterface dialog, int which) 
            {
              Toast.makeText(getApplicationContext(), 
              		"Eliminación de base de datos cancelada", Toast.LENGTH_LONG).show();
            } 
          }); 
          alertDialog.show();

      }
    }); 
  • Código para botón de cerrar la aplicación:
    //Cerrar aplicación Android
    botonCerrar.setOnClickListener(new View.OnClickListener() 
    {
      public void onClick(View v) 
      {
    	  finish();
      }
    });  
  • Código para abrir la base de datos (crearla si no existe, crear la tabla):
      //Procedimiento para abrir la base de datos
      //si no existe se creará, también se creará la tabla contacto        
      private void abrirBasedatos() 
      {   
        try 
        {   
          baseDatos = openOrCreateDatabase(nombreBD, MODE_WORLD_WRITEABLE, null);   
          baseDatos.execSQL(crearTablaContacto);   
        }    
        catch (Exception e)
        {   
          Log.i(TAG, "Error al abrir o crear la base de datos" + e);   
        }   
      }  
  • Código para insertar un registro en la tabla de la base de datos SQLite:
  //Método que realiza la inserción de los datos en nuestra tabla contacto                  
  private boolean insertarFila(String nombre, String telefono) 
  {   
    ContentValues values = new ContentValues();   
    values.put("nombre",nombre );   
    values.put("telefono", telefono);
    Toast.makeText(getApplicationContext(), "Nombre: " + nombre + ", " +
    		"teléfono: " + telefono, Toast.LENGTH_LONG).show();
    return (baseDatos.insert(tablaContacto, null, values) > 0);   
  }	

Desarrollar aplicación Android con acceso a base de datos SQLite

 

La aplicación AjpdSoft Agenda Telefónica Android en funcionamiento

Si eres usuario registrado de nuestra web (si no lo eres puedes registrarte gratuitamente aquí) puedes descargar el código fuente y la aplicación .apk lista para instalar en dispositivos Android en:

AjpdSoft Agenda Telefónica Android

A continuación mostramos cómo funciona nuestra aplicación de ejemplo de acceso a SQLite en dispositivos Android. Tras abrir la aplicación, introduciremos el nombre del contacto y el teléfono y pulsaremos en el botón "Insertar contacto":

La aplicación AjpdSoft Agenda Telefónica Android en funcionamiento

Si no hay problemas mostrará el mensaje "Contacto añadido correctamente":

La aplicación AjpdSoft Agenda Telefónica Android en funcionamiento

Si hay algún problema, por ejemplo que se está intentando introducir un teléfono ya existente mostrará el mensaje "No se ha podido guardar el contacto":

La aplicación AjpdSoft Agenda Telefónica Android en funcionamiento

Para realizar una llamada telefónica desde nuestro dispositovo Android pulsaremos en el botón "Llamar al contacto", dicho botón pedirá confirmación con el mensaje "¿Desea realizar la llamada al contacto?" si pulsaremos "Sí":

La aplicación AjpdSoft Agenda Telefónica Android en funcionamiento

Realizará una llamada telefónica al número de teléfono del contacto:

La aplicación AjpdSoft Agenda Telefónica Android en funcionamiento

Si queremos eliminar toda la agenda (por completo) pulsaremos en el botón "Eliminar BD":

La aplicación AjpdSoft Agenda Telefónica Android en funcionamiento

Nos mostrará un mensaje de confirmación con el texto "¿Desea eliminar la base de datos por completo?", pulsaremos "Sí" si queremos eliminar todos los contactos de la aplicación AjpdSoft Agenda Telefónica Android de nuestro dispositvo Android, por supuesto, hablamos siempre de los contactos de la agenda de nuestra aplicación, NO de los contactos del dispositivo Android:

La aplicación AjpdSoft Agenda Telefónica Android en funcionamiento

Si la base de datos de la agenda ha podido ser eliminada mostrará el mensaje "Base de datos eliminada correctamente":

La aplicación AjpdSoft Agenda Telefónica Android en funcionamiento

Por último, si queremos cerrar la aplicación AjpdSoft Agenda Telefónica Android, hemos añadido el botón "Cerrar aplicación" pues es una de las carencias habituales de las aplicaciones Android, no suelen incluir un botón cerrar y hay que cerrarlas usando alguna aplicación de terceros:

La aplicación AjpdSoft Agenda Telefónica Android en funcionamiento

Tras pulsar el botón cerrar, Android nos devolverá al menú del dispositivo:

La aplicación AjpdSoft Agenda Telefónica Android en funcionamiento

 

 

Cómo comprobar la base de datos SQLite y explorar los ficheros del dispositivo Android virtual emulador AVD

Si queremos explirar los ficheros del dispositivo virtual Android y, sobre todo, si queremos ver si nuestra aplicación ha creado el fichero de base de datos SQLite, desde Eclipse, pulsaremos en el menú "Window" - "Open Perspective" - "Other":

Cómo comprobar la base de datos SQLite y explorar los ficheros del dispositivo Android virtual emulador AVD

Seleccionaremos DDMS y pularemos OK:

Cómo comprobar la base de datos SQLite y explorar los ficheros del dispositivo Android virtual emulador AVD

Desde el File Explorer, accederemos a "data" - "data" - "agendatelefonica.agenda" - "databases", dentro de esta carpeta debe aparecer el fichero "agenda" correspondiente a la base de datos SQLite creada desde nuestra aplicación AjpdSoft Agenda Telefónica Android:

Cómo comprobar la base de datos SQLite y explorar los ficheros del dispositivo Android virtual emulador AVD

Para comprobar que se están insertando los registros en la tabla "contacto" de la base de datos SQLite de nuestra aplicación AjpdSoft Agenda Telefónica Android abriremos una ventana de Terminal (en Linux Ubuntu desde "Aplicaciones" - "Accesorios" - "Terminal"), desde esta ventana accederemos a la subcarpeta "platform-tools" que estará ubicada dentro de la carpeta de instalación del SDK de Android, en nuestro caso:

/home/ajpdsoft/Android/android-sdk-linux_x86/platform-tools

Una vez en esta carpeta, ejecutaremos el comando linux:

./adb shell

A continuación, para abrir la base de datos creada desde nuestra aplicación, una vez que sabemos su ubicación (con File Explorer DDMS), ejecutaremos el comando:

sqlite3 /data/data/agendatelefonica.agenda/databases/agenda

Si la ruta es correcta y existe el fichero "agenda" de SQLite entraremos en la línea de comandos de SQLite, desde donde podremos, por ejemplo, ejecutar una consulta SQL para ver si se están insertando los registros en la tabla "contacto" y para ver si existe la tabla contacto:

Para comprobar que existe la tabla "contacto" ejecutaremos el comando:

.tables

Para mostrar el contenido de la tabla "contacto" y verificar que la aplicación AjpdSoft Agenda Telefónica Android está funcionando correctamente ejecutaremos el comando SQL:

select * from contacto;

Que nos devolverá todos los contactos de la tabla "contactos" de la base de datos "agenda":

Cómo comprobar la base de datos SQLite y explorar los ficheros del dispositivo Android virtual emulador AVD

Otra herramienta más de Eclipse y el SDK de Android para facilitarnos el desarrollo de aplicaciones para dispositivos Android.

 

 

Anexo

  • Código fuente completo de AjpdSoft Agenda Android 1.0:
package agendatelefonica.agenda;

import android.app.Activity;
import android.os.Bundle;
import android.content.ContentValues;
import android.database.sqlite.SQLiteDatabase;
import android.widget.EditText;
import android.widget.Button;
import android.widget.Toast;
import android.util.Log;
import android.view.View;
import android.content.Intent;
import android.net.Uri;
import android.app.AlertDialog;
import android.content.DialogInterface;

public class agenda extends Activity 
{
  EditText editNombre,editTelefono;
  private Button botonGuardar;
  private Button botonLlamar;
  private Button botonEliminarBD;
  private Button botonCerrar;  
	 
  private SQLiteDatabase baseDatos;   
  private static final String TAG = "bdagenda";   
  private static final String nombreBD = "agenda";   
  private static final String tablaContacto = "contacto";  
	
  //guardamos en un String toda la creación de la tabla        
  private static final String crearTablaContacto = "create table if not exists "  
	  + " contacto (codigo integer primary key autoincrement, "  
	  + " nombre text not null, telefono text not null unique);";   
	
  @Override
  public void onCreate(Bundle savedInstanceState) 
  { 
    //Asignamos a cada objeto visual creado a su respectivo elemento de main.xml           
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
            
    editNombre   = (EditText) findViewById(R.id.txtNombre);   
    editTelefono = (EditText) findViewById(R.id.txtTelefono); 
    botonGuardar = (Button) findViewById(R.id.btGuardar);
    botonLlamar = (Button) findViewById(R.id.btLlamar);
    botonEliminarBD = (Button) findViewById(R.id.btEliminarBD);
    botonCerrar = (Button) findViewById(R.id.btCerrar);    

    
    //Guardar el contacto actual en la agenda
    botonGuardar.setOnClickListener(new View.OnClickListener() 
    {
      public void onClick(View v) 
      {
        //Abrir la base de datos, se creará si no existe             		
        abrirBasedatos();

        //Insertar una fila o registro en la tabla "contacto"
        //si la inserción es correcta devolverá true     
        boolean resultado = insertarFila(editNombre.getText().toString(), 
        editTelefono.getText().toString());
        if(resultado) 
          Toast.makeText(getApplicationContext(), 
        		  "Contacto añadido correctamente", Toast.LENGTH_LONG).show();
        else 
          Toast.makeText(getApplicationContext(), 
        		  "No se ha podido guardar el contacto" ,   Toast.LENGTH_LONG).show();             		
      }
    });                   


    //Llamar al contacto actual por teléfono
    botonLlamar.setOnClickListener(new View.OnClickListener() 
    {
      public void onClick(View v) 
      {        
    	//Mostrar un mensaje de confirmación antes de realizar la llamada  
    	AlertDialog.Builder alertDialog = new AlertDialog.Builder(agenda.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("Sí", new DialogInterface.OnClickListener() 
        {
          public void onClick(DialogInterface dialog, int which) 
          {
            try 
            {          			 
              EditText num=(EditText)findViewById(R.id.txtTelefono); 
              String number = "tel:" + num.getText().toString().trim();
              Toast.makeText(getApplicationContext(), 
            		  "Llamando al " + num.getText().toString().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();
      } 
    });
            

    //Eliminar la base de datos de la agenda
    botonEliminarBD.setOnClickListener(new View.OnClickListener() 
    {
      public void onClick(View v) 
      {
        //Mostrar un mensaje de confirmación antes de eliminar la base de datos  
      	AlertDialog.Builder alertDialog = new AlertDialog.Builder(agenda.this);
      	alertDialog.setMessage("¿Desea eliminar la base de datos por completo?");
      	alertDialog.setTitle("Eliminar agenda...");
      	alertDialog.setIcon(android.R.drawable.ic_dialog_alert);
      	alertDialog.setCancelable(false);
      	alertDialog.setPositiveButton("Sí", new DialogInterface.OnClickListener() 
          {
            public void onClick(DialogInterface dialog, int which) 
            {
              try 
              {  
                  Toast.makeText(getApplicationContext(), 
                		  "Eliminando base de datos: " + nombreBD, Toast.LENGTH_LONG).show();
                  boolean resultado = deleteDatabase(nombreBD);
                  if(resultado) 
                    Toast.makeText(getApplicationContext(), 
                    	  "Base de datos eliminada correctamente", Toast.LENGTH_LONG).show();
                    else 
                      Toast.makeText(getApplicationContext(), 
                    	  "No se ha podido eliminar la base de datos", Toast.LENGTH_LONG).show();            	  
              } 
              catch (Exception e) 
              {
                Toast.makeText(getApplicationContext(), 
              		  "No se ha podido eliminar la base de datos", Toast.LENGTH_LONG).show();
              }
            } 
          }); 
          alertDialog.setNegativeButton("No", new DialogInterface.OnClickListener() 
          {
            public void onClick(DialogInterface dialog, int which) 
            {
              Toast.makeText(getApplicationContext(), 
              		"Eliminación de base de datos cancelada", Toast.LENGTH_LONG).show();
            } 
          }); 
          alertDialog.show();

      }
    });    

    
    //Cerrar aplicación Android
    botonCerrar.setOnClickListener(new View.OnClickListener() 
    {
      public void onClick(View v) 
      {
    	  finish();
      }
    });                   
    
    
    
  }
         
  
  
  //Procedimiento para abrir la base de datos
  //si no existe se creará, también se creará la tabla contacto        
  private void abrirBasedatos() 
  {   
    try 
    {   
      baseDatos = openOrCreateDatabase(nombreBD, MODE_WORLD_WRITEABLE, null);   
      baseDatos.execSQL(crearTablaContacto);   
    }    
    catch (Exception e)
    {   
      Log.i(TAG, "Error al abrir o crear la base de datos" + e);   
    }   
  }  
 
  //Método que realiza la inserción de los datos en nuestra tabla contacto                  
  private boolean insertarFila(String nombre, String telefono) 
  {   
    ContentValues values = new ContentValues();   
    values.put("nombre",nombre );   
    values.put("telefono", telefono);
    Toast.makeText(getApplicationContext(), "Nombre: " + nombre + ", " +
    		"teléfono: " + telefono, Toast.LENGTH_LONG).show();
    return (baseDatos.insert(tablaContacto, null, values) > 0);   
  }	
}

 

Artículos relacionados

 

Créditos

Artículo realizado íntegramente por Alonsojpd miembro fundador del proyecto AjpdSoft.


Anuncios


Enviado el Sábado, 23 abril a las 00:13:35 por ajpdsoft
Este sitio web NO CONTIENE malware, todos los programas con código fuente aquí. Autor: Alonso Javier Pérez Díaz Google+ Síguenos en Google+