Aurelio López Ovando Botón de pánico (App para Android) · 2015-11-04 · Aurelio López Ovando...
Transcript of Aurelio López Ovando Botón de pánico (App para Android) · 2015-11-04 · Aurelio López Ovando...
Aurelio López Ovando – Botón de pánico (App para Android)
1
Tabla de la BD local
Aurelio López Ovando – Botón de pánico (App para Android)
2
VISTA configuracion.xml
<ScrollView 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:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:background="#666"
tools:context="com.aur3liux.alopez.awat.Configuracion">
<TabHost
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/tabHost"
android:isScrollContainer="true"
android:layout_alignParentTop="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TabWidget
android:id="@android:id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"></TabWidget>
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="20dp"
android:background="@android:drawable/alert_light_frame">
<!--Primer Tab -->
<LinearLayout
android:id="@+id/tab_seguridad"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="50dp"
android:gravity="bottom"
android:text="@string/tx_lb_username"
style="@style/titulo1"
android:id="@+id/textView" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxLength="30"
android:id="@+id/tx_username" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/tx_lb_password"
style="@style/titulo1"
android:id="@+id/textView2" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:maxLength="20"
android:ems="10"
android:id="@+id/tx_password" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/tx_lb_confirma_password"
style="@style/titulo1"
android:id="@+id/textView3" />
Aurelio López Ovando – Botón de pánico (App para Android)
3
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:maxLength="20"
android:ems="10"
android:id="@+id/tx_password_confirm" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/lb_numero_telefono"
style="@style/titulo1"
android:id="@+id/textView5" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="phone"
android:maxLength="15"
android:ems="10"
android:id="@+id/tx_numerotelefono" />
</LinearLayout>
<!--Segundo Tab -->
<LinearLayout
android:id="@+id/tab_contactos"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<!--Primer contacto-->
<TextView
android:layout_width="wrap_content"
android:layout_height="50dp"
android:gravity="bottom"
android:text="@string/lb_first_contact"
style="@style/titulo1"
android:id="@+id/textView4" />
<RelativeLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/lb_mensaje1"
android:id="@+id/tx_contacto1"
android:paddingLeft="10dp"
android:layout_marginTop="0dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/lb_mensaje2"
android:id="@+id/tx_numcontacto1"
android:paddingLeft="10dp"
android:layout_below="@id/tx_contacto1"
android:layout_marginTop="0dp" />
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_alignParentRight="true"
android:src="@drawable/more_horiz"
android:id="@+id/btn_select_contcat1"
android:layout_marginTop="0dp" />
</RelativeLayout>
<!--Segundo contacto-->
<View
android:layout_width="fill_parent"
android:layout_height="2dp"
android:layout_marginTop="15dp"
Aurelio López Ovando – Botón de pánico (App para Android)
4
android:background="@drawable/linea"
android:layout_marginLeft="3dp"
android:layout_marginRight="5dp"/>
<TextView
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="bottom"
style="@style/titulo1"
android:text="@string/lb_second_contact"
android:id="@+id/textView6" />
<RelativeLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/lb_mensaje1"
android:id="@+id/tx_contacto2"
android:paddingLeft="10dp"
android:layout_marginTop="0dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/lb_mensaje2"
android:id="@+id/tx_numcontacto2"
android:paddingLeft="10dp"
android:layout_below="@id/tx_contacto2"
android:layout_marginTop="0dp" />
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_alignParentRight="true"
android:src="@drawable/more_horiz"
android:paddingLeft="10dp"
android:id="@+id/btn_select_contcat2"
android:layout_marginTop="0dp" />
</RelativeLayout>
<!--Tercer contacto-->
<View
android:layout_width="fill_parent"
android:layout_height="2dp"
android:layout_marginTop="15dp"
android:background="@drawable/linea"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="50dp"
android:gravity="bottom"
style="@style/titulo1"
android:text="@string/lb_third_contact"
android:id="@+id/textView7" />
<RelativeLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/lb_mensaje1"
android:id="@+id/tx_contacto3"
android:paddingLeft="10dp"
android:layout_marginTop="0dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/lb_mensaje2"
android:id="@+id/tx_numcontacto3"
Aurelio López Ovando – Botón de pánico (App para Android)
5
android:paddingLeft="10dp"
android:layout_below="@id/tx_contacto3"
android:layout_marginTop="0dp" />
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_alignParentRight="true"
android:src="@drawable/more_horiz"
android:paddingLeft="10dp"
android:id="@+id/btn_select_contcat3"
android:layout_marginTop="0dp" />
</RelativeLayout>
</LinearLayout>
</FrameLayout>
</LinearLayout>
</TabHost>
</ScrollView>
menu_configuracion.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:Awat="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.aur3liux.alopez.awat.Configuracion">
<item android:id="@+id/save_option"
android:icon="@drawable/upload"
android:title="@string/guardar_config"
Awat:showAsAction="always"
android:orderInCategory="1" />
<item android:id="@+id/edit_option"
android:title="@string/edit_config"
Awat:showAsAction="never"
android:orderInCategory="1" />
</menu>
linea.xml
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@android:color/black"/>
<corners android:radius="3dp"/>
</shape>
Controlador
Configuracion.java
import android.app.AlertDialog;
import android.content.ContentValues;
import android.content.DialogInterface;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.TabHost;
import android.widget.TextView;
// Contactos
import android.content.Intent;
import android.provider.ContactsContract;
import android.widget.Toast;
import Model.DbInit;
import Model.Usuario;
import Model.UsuariosAdmin;
Aurelio López Ovando – Botón de pánico (App para Android)
6
public class Configuracion extends AppCompatActivity
{
// Controles de la sección de seguridad (Primera pestaña)
EditText txUsuario; // Nombre de usuario con que se identifica
EditText txPassword; // Password para hacer futuros cambios
EditText txPasswordConfirm; // Confirmar password
EditText txNumTelefono; // Mi numero de telefono
// Controles de la selección de contactos (Segunda pestaña)
TabHost tabs;
ImageButton btnContacto1,btnContacto2,btnContacto3; // Botones para elegir los contactos
TextView txContacto1, txTelefono1; // Datos del primer contacto
TextView txContacto2,txTelefono2; // Datos del segundo contacto
TextView txContacto3,txTelefono3; // Datos del tercer contacto
public static final int PICK_CONTACT_REQUEST = 1 ;
private static int contacto = 0;
// Datos de la configuaracion de la base de datos
private static int version = 1;
private static String dbName = "Usuario.db";
private static SQLiteDatabase.CursorFactory factory = null;
SQLiteDatabase db;
DbInit dataBaseUser;
private Uri contactUri;
boolean banderaConDatos;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.configuracion);
// Configuramos las pestañas
tabs = (TabHost)findViewById(R.id.tabHost);
tabs.setup();
TabHost.TabSpec tbSeguridad = tabs.newTabSpec("Seguridad");
TabHost.TabSpec tbContactos = tabs.newTabSpec("Contactos");
tbSeguridad.setIndicator("", getResources().getDrawable(R.drawable.unlock));
tbSeguridad.setContent(R.id.tab_seguridad);
tbContactos.setIndicator("", getResources().getDrawable(R.drawable.user));
tbContactos.setContent(R.id.tab_contactos);
tabs.addTab(tbSeguridad);
tabs.addTab(tbContactos);
// Vinculamos los datos del usuario
txNumTelefono = (EditText)findViewById(R.id.tx_numerotelefono);
txUsuario = (EditText)findViewById(R.id.tx_username);
txPassword = (EditText)findViewById(R.id.tx_password);
txPasswordConfirm = (EditText)findViewById(R.id.tx_password_confirm);
// Vinculamos los controles
btnContacto1 = (ImageButton)findViewById(R.id.btn_select_contcat1);
btnContacto2 = (ImageButton)findViewById(R.id.btn_select_contcat2);
btnContacto3 = (ImageButton)findViewById(R.id.btn_select_contcat3);
txContacto1 = (TextView)findViewById(R.id.tx_contacto1);
txTelefono1 = (TextView)findViewById(R.id.tx_numcontacto1);
txContacto2 = (TextView)findViewById(R.id.tx_contacto2);
txTelefono2 = (TextView)findViewById(R.id.tx_numcontacto2);
txContacto3 = (TextView)findViewById(R.id.tx_contacto3);
txTelefono3 = (TextView)findViewById(R.id.tx_numcontacto3);
// Programamos los botones para seleccionar contact
seleccionaContactos();
// Testeamos si hay datos de usuario en la base de datos
dataBaseUser = new DbInit(this,dbName,factory,version);
db = dataBaseUser.getReadableDatabase();
Usuario usr =UsuariosAdmin.consultaDatos(db);
if(usr != null)
{
Toast.makeText(getApplicationContext(),"Datos encontrados",Toast.LENGTH_SHORT).show();
// Como ya hay datos deshabilitamos la edicion
txNumTelefono.setEnabled(false);
txUsuario.setEnabled(false);
txPassword.setEnabled(false);
txPasswordConfirm.setEnabled(false);
btnContacto1.setEnabled(false);
btnContacto2.setEnabled(false);
Aurelio López Ovando – Botón de pánico (App para Android)
7
btnContacto3.setEnabled(false);
banderaConDatos = true;
// Recuperamos los datos
txNumTelefono.setText(usr.getNumTel());
txUsuario.setText(usr.getUserName());
txPassword.setText(usr.getPassword());
txPasswordConfirm.setText(usr.getPassword());
txContacto1.setText(usr.getContacto1().getNombre());
txTelefono1.setText(usr.getContacto1().getNumTel());
txContacto2.setText(usr.getContacto2().getNombre());
txTelefono2.setText(usr.getContacto2().getNumTel());
txContacto3.setText(usr.getContacto3().getNombre());
txTelefono3.setText(usr.getContacto3().getNumTel());
}
else
{
banderaConDatos = false;
}
}
// Botones para seleccionar contactos
public void seleccionaContactos()
{
// Primer contacto
btnContacto1.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
// Primer contacto
lanzaActivitycontactos(1);
}
});
// Segundo contacto
btnContacto2.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
// Segundo contacto
lanzaActivitycontactos(2);
}
});
// Tercer contacto
btnContacto3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Tercer contacto
lanzaActivitycontactos(3);
}
});
}
private void lanzaActivitycontactos(int numContacto)
{
contacto = numContacto;
Intent i = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(i, PICK_CONTACT_REQUEST);
}
protected void onActivityResult(int requestCode, int resultCode, Intent intent)
{
if (requestCode == PICK_CONTACT_REQUEST)
{
if (resultCode == RESULT_OK)
{
// Capturar el valor de la Uri
contactUri = intent.getData();
// Procesar la Uri
if(contacto == 1)
renderContact(contactUri,txContacto1,txTelefono1);
if(contacto == 2)
renderContact(contactUri,txContacto2,txTelefono2);
if(contacto == 3)
renderContact(contactUri,txContacto3,txTelefono3);
}
Aurelio López Ovando – Botón de pánico (App para Android)
8
}
}
private void renderContact(Uri uri, TextView name, TextView phone)
{
name.setText(Miscellaneus.getName(uri,getApplicationContext()));
phone.setText(Miscellaneus.getPhone(uri, getApplicationContext()));
}
@Override
public boolean onPrepareOptionsMenu(Menu menu)
{
if(banderaConDatos)
{
menu.getItem(0).setEnabled(false);
menu.getItem(1).setEnabled(true);
}
else
{
menu.getItem(0).setEnabled(true);
menu.getItem(1).setEnabled(false);
}
return true;
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_configuracion, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.save_option)
{
// Abrimos la base de datos en modo escritura
db = dataBaseUser.getWritableDatabase();
if(db != null)
{
// Si hay datos vacíos se lanza una alerta
if(!Miscellaneus.datosVacios(this))
{
String titulo = "Error";
String mensaje = "No deje vacío ningún dato";
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
alertDialogBuilder.setTitle(titulo);
alertDialogBuilder
.setMessage(mensaje)
.setCancelable(false)
.setPositiveButton("Ok", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int id)
{
dialog.cancel();
}
});
// Se lanza el dialogo
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
}
else
{
// Validamos que el password coincida
if(!txPassword.getText().toString().equals(txPasswordConfirm.getText().toString()))
{
String titulo = "Error";
String mensaje = "El password no coincide";
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
alertDialogBuilder.setTitle(titulo);
alertDialogBuilder
.setMessage(mensaje)
Aurelio López Ovando – Botón de pánico (App para Android)
9
.setCancelable(false)
.setPositiveButton("Ok", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int id)
{
txPassword.setText("");
txPasswordConfirm.setText("");
dialog.cancel();
}
});
// Se lanza el dialogo
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
}
else
{
// Validamos que los tres contactos sean diferentes
String tel1 = txTelefono1.getText().toString();
String tel2 = txTelefono2.getText().toString();
String tel3 = txTelefono3.getText().toString();
boolean igualesTel = false;
if(tel1.equals(tel2)) igualesTel = true;
if(tel2.equals(tel3)) igualesTel = true;
if(tel1.equals(tel3))igualesTel = true;
if(igualesTel)
{
String titulo = "Error";
String mensaje = "Los contactos deden ser todos diferentes";
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
alertDialogBuilder.setTitle(titulo);
alertDialogBuilder
.setMessage(mensaje)
.setCancelable(false)
.setPositiveButton("Ok", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int id)
{
dialog.cancel();
}
});
// Se lanza el dialogo
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
}
else
{
// Se guardan los datos
ContentValues registro = new ContentValues();
registro.put("numTel", txNumTelefono.getText().toString());
registro.put("usuario", txUsuario.getText().toString());
registro.put("password", txPassword.getText().toString());
registro.put("contacto1", txContacto1.getText().toString());
registro.put("telContacto1", txTelefono1.getText().toString());
registro.put("contacto2", txContacto2.getText().toString());
registro.put("telContacto2", txTelefono2.getText().toString());
registro.put("contacto3", txContacto3.getText().toString());
registro.put("telContacto3", txTelefono3.getText().toString());
db.insert("usuario", null, registro);
Toast.makeText(getApplicationContext(), "Datos guardados",
Toast.LENGTH_SHORT).show();
Intent aPrincipal = new Intent(this, Principal.class);
aPrincipal.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(aPrincipal);
// debe cerrar la base de datos actual y regresar a la ventana anterior
}
}
}
// Cerramos la base de datos
db.close();
}
return true;
}
return super.onOptionsItemSelected(item);
}
}
Aurelio López Ovando – Botón de pánico (App para Android)
10
Miscellaneus.java
import android.app.AlertDialog;
import android.content.ContentResolver;
import android.content.Context;
import android.content.DialogInterface;
import android.database.Cursor;
import android.net.Uri;
import android.provider.ContactsContract;
import android.widget.EditText;
import android.widget.TextView;
public class Miscellaneus
{
public static String getName(Uri uri, Context ctx)
{
// Valor a retornar
String name = null;
// Obtener una instancia del Content Resolver
ContentResolver contentResolver = ctx.getContentResolver();
// Consultar el nombre del contacto
Cursor c = contentResolver.query(
uri,
new String[]{ContactsContract.Contacts.DISPLAY_NAME},
null,
null,
null);
if(c.moveToFirst())
{
name = c.getString(0);
}
// Cerramos el cursor
c.close();
return name;
}
public static String getPhone(Uri uri, Context ctx)
{
// Variables temporales para el id y el teléfono
String id = null;
String phone = null;
/************* PRIMERA CONSULTA ************/
// Obtener el _ID del contacto
Cursor contactCursor = ctx.getContentResolver().query(
uri,
new String[]{ContactsContract.Contacts._ID},
null,
null,
null);
if (contactCursor.moveToFirst())
{
id = contactCursor.getString(0);
}
contactCursor.close();
/************* SEGUNDA CONSULTA ************/
/* Sentencia WHERE para especificar que solo deseamos
números de telefonía móvil */
String selectionArgs =
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ? AND " +
ContactsContract.CommonDataKinds.Phone.TYPE+"= " +
ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE;
// Obtener el número telefónico
Cursor phoneCursor = ctx.getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
new String[]{ContactsContract.CommonDataKinds.Phone.NUMBER},
selectionArgs,
new String[]{id},
null
);
if (phoneCursor.moveToFirst()) {
phone = phoneCursor.getString(0);
}
phoneCursor.close();
Aurelio López Ovando – Botón de pánico (App para Android)
11
return phone;
}
// Validamos que haya quedado datos vacios
public static boolean datosVacios(Configuracion ctx)
{
boolean banderaTodosCapturados = true;
// Se validan que no dejen controles vacíos
if(ctx.txNumTelefono.getText().length() == 0) // Num del tel
banderaTodosCapturados = false;
if(ctx.txUsuario.getText().length() == 0) // Usuario
banderaTodosCapturados = false;
if(ctx.txPassword.getText().length() == 0) // Password
banderaTodosCapturados = false;
if(ctx.txPasswordConfirm.getText().length() == 0) // Confirmar password
banderaTodosCapturados = false;
if(ctx.txContacto1.getText().equals("Seleccione un contacto")) // Contacto 1
banderaTodosCapturados = false;
if(ctx.txContacto2.getText().equals("Seleccione un contacto")) // Contacto 2
banderaTodosCapturados = false;
if(ctx.txContacto3.getText().equals("Seleccione un contacto")) // Contacto 3
banderaTodosCapturados = false;
if(ctx.txTelefono1.getText().equals("(Vacío)")) // Telefono 1
banderaTodosCapturados = false;
if(ctx.txTelefono2.getText().equals("(Vacío)")) // Telefono 2
banderaTodosCapturados = false;
if(ctx.txTelefono3.getText().equals("(Vacío)")) // Telefono 3
banderaTodosCapturados = false;
return banderaTodosCapturados;
}
// Testetamos que no dejen vacío un control
public static boolean isEmpty(EditText control)
{
if(control.getText().length()==0)
return true;
else
return false;
}
public static boolean isEmpty(TextView control)
{
if(control.getText().length()==0)
return true;
else
return false;
}
public static void alertaDialog(Context ctx, String titulo, String mensaje)
{
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(ctx);
// set title
alertDialogBuilder.setTitle(titulo);
// set dialog message
alertDialogBuilder
.setMessage(mensaje)
.setCancelable(false)
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id)
{
// if this button is clicked, close
// current activity
// MainActivity.this.finish();
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// if this button is clicked, just close
// the dialog box and do nothing
dialog.cancel();
}
});
// create alert dialog
AlertDialog alertDialog = alertDialogBuilder.create();
// show it
alertDialog.show();
Aurelio López Ovando – Botón de pánico (App para Android)
12
}
}
Modelo Contactos.java
public class Contacto
{
public String getNombre()
{
return nombre;
}
public void setNombre(String nombre)
{
this.nombre = nombre;
}
public String getNumTel()
{
return numTel;
}
public void setNumTel(String numTel)
{
this.numTel = numTel;
}
private String nombre;
String numTel;
// Constructor
public Contacto(String numT, String name)
{
setNumTel(numT);
setNombre(name);
}
public Contacto()
{ }
}
DbInit.java
import android.content.Context;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DbInit extends SQLiteOpenHelper
{
//Sentencia SQL para crear la tabla de Usuarios
String tablaQry = "CREATE TABLE usuario(" +
"numTel TEXT PRIMARY KEY,"+
"usuario TEXT NOT NULL," +
"password TEXT NOT NULL,"+
"contacto1 TEXT NOT NULL,"+
"telContacto1 TEXT NOT NULL,"+
"contacto2 TEXT NOT NULL,"+
"telContacto2 TEXT NOT NULL,"+
"contacto3 TEXT NOT NULL,"+
"telContacto3 TEXT NOT NULL);";
public SQLiteDatabase db = null;
// Constructor
public DbInit(Context context, String dbName, SQLiteDatabase.CursorFactory factory, int
version)
{
super(context, dbName, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db)
{
db.execSQL(tablaQry);
Aurelio López Ovando – Botón de pánico (App para Android)
13
}
@Override
public void onUpgrade(SQLiteDatabase db, int versionActual, int newVersion)
{
// Se crea ña nueva version de la tabla
db.execSQL(tablaQry);
}
public void openDB() throws SQLException
{
if(this.db == null)
{
this.db = this.getWritableDatabase();
}
}
public void closeDB()
{
if(this.db != null)
{
if(this.db.isOpen())
this.db.close();
}
}
}
UsuariosAdmin.java
import android.database.Cursor;
import android.database.DatabaseUtils;
import android.database.sqlite.SQLiteDatabase;
public class UsuariosAdmin
{
/*usuario numTel - 0, usuario - 1, password - 2, contacto1 - 3, telContacto1 4
contacto2 - 5, telContacto2 - 6, contacto3 - 7, telContacto3 - 8 */
public static Usuario consultaDatos(SQLiteDatabase db)
{
// Testeamos si hay registros guardados
int numDatos = (int) DatabaseUtils.queryNumEntries(db, "usuario");
if(numDatos > 0)
{
Cursor c = db.rawQuery("SELECT * FROM usuario", null);
Usuario user = new Usuario();
Contacto contact;
//Nos aseguramos de que existe al menos un registro
if (c.moveToFirst())
{
user.setNumTel(c.getString(0));
user.setUserName(c.getString(1));
user.setPassword(c.getString(2));
contact = new Contacto();
contact.setNombre(c.getString(3));
contact.setNumTel(c.getString(4));
user.setContacto1(contact);
contact = new Contacto();
contact.setNombre(c.getString(5));
contact.setNumTel(c.getString(6));
user.setContacto2(contact);
contact = new Contacto();
contact.setNombre(c.getString(7));
contact.setNumTel(c.getString(8));
user.setContacto3(contact);
}
return user;
}
else
return null;
}
}
Aurelio López Ovando – Botón de pánico (App para Android)
14
Usuarios.java
public class Usuario
{
public String getNumTel() {
return numTel;
}
public void setNumTel(String numTel) {
this.numTel = numTel;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Contacto getContacto1() {
return contacto1;
}
public void setContacto1(Contacto contacto1) {
this.contacto1 = contacto1;
}
public Contacto getContacto2() {
return contacto2;
}
public void setContacto2(Contacto contacto2) {
this.contacto2 = contacto2;
}
public Contacto getContacto3() {
return contacto3;
}
public void setContacto3(Contacto contacto3) {
this.contacto3 = contacto3;
}
private String numTel;
private String userName;
private String password;
private Contacto contacto1;
private Contacto contacto2;
private Contacto contacto3;
// Constructor
public Usuario(String nTel, String user, String pass, Contacto c1, Contacto c2, Contacto c3)
{
setNumTel(nTel);
setUserName(user);
setPassword(pass);
setContacto1(c1);
setContacto2(c2);
setContacto3(c3);
}
public Usuario()
{ }
}