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.
- Requisitos iniciales para desarrollar aplicaciones para dispositivos Android.
- Desarrollar aplicación Android con acceso a base de datos SQLite.
- 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.
- Anexo.
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:
Desarrollar aplicación Android con acceso a base de datos SQLite
Abriremos el IDE de desarrollo Eclipse, accederemos al menú «File» – «New» – «Project»:
Seleccionaremos «Android» – «Android Project» y pulsaremos «Next»:
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».
- Application name: «AjpdSoft Agenda Telefonica Android».
- Package name: «agendatelefonica.agenda».
- Marcaremos «Create Activity» e introduciremos «agenda».
Pulsaremos «Finish»:
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»:
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.
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:
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.
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.
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 continuamente en un dispositivo Android físico. Para compilar la aplicación pulsaremos en el menú «Run» – «Run» (ó pulsando las teclas Control + F11):
En la ventana de «Run As» seleccionaremos «Android Application» y pulsaremos «OK»:
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:
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»:
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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
//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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
//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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
//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:
1 2 3 4 5 6 7 8 |
//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):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
//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:
1 2 3 4 5 6 7 8 9 10 |
//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); } |
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:
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»:
Si no hay problemas mostrará el mensaje «Contacto añadido correctamente»:
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»:
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í»:
Realizará una llamada telefónica al número de teléfono del contacto:
Si queremos eliminar toda la agenda (por completo) pulsaremos en el botón «Eliminar BD»:
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:
Si la base de datos de la agenda ha podido ser eliminada mostrará el mensaje «Base de datos eliminada correctamente»:
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:
Tras pulsar el botón cerrar, Android nos devolverá al menú del dispositivo:
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»:
Seleccionaremos DDMS y pulsaremos OK:
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:
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»:
Otra herramienta más de Eclipse y el SDK de Android para facilitarnos el desarrollo de aplicaciones para dispositivos Android.
Anexo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 |
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); } } |