Esta es mi primera aplicación con Android. Se trata de un buscador de contactos a través de su número de teléfono.
Los contactos se van filtrando conforme se va tecleando el número de teléfono. Si pulsamos sobre un item del resultado se abrirá su ficha de contacto.
Con esta aplicación quería experimentar:
Consideraciones técnicas:
[java] /*
import android.app.Activity; import android.app.AlertDialog; import android.content.ContentUris; import android.content.DialogInterface; import android.content.Intent; import android.content.DialogInterface.OnClickListener; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.provider.Contacts.People; import android.view.KeyEvent; import android.view.View; import android.widget.AdapterView; import android.widget.EditText; import android.widget.ListView; import android.widget.SimpleCursorAdapter; import android.widget.AdapterView.OnItemClickListener;
public class BuscaTlf extends Activity { private EditText telefono;
/** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.buscacontactos);
telefono = (EditText) findViewById(R.id.telefono);
// Conforme se va tecleando va buscando las coincidencias telefono.setOnKeyListener(new View.OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { buscaTelefono(telefono.getText().toString()); return false; } });
}
public void buscaTelefono(String telefono) { // Las columnas que queremos en el resultado String[] projection = new String[] { android.provider.Contacts.Phones._ID, android.provider.Contacts.Phones.NAME, android.provider.Contacts.Phones.NUMBER, android.provider.Contacts.Phones.TYPE };
ListView lista = (ListView) findViewById(R.id.listaRtdo);
// Ejecutamos la consulta try { Cursor datos = managedQuery(android.provider.Contacts.Phones.CONTENT_URI, // Uri de busqueda. Buscamos en todos los telefonos projection, // Con que campos nos quedamos android.provider.Contacts.Phones.NUMBER + “ LIKE ? “, // Condición de búsqueda new String[] { “%”+telefono+”%” } , // Parámetros de búsqueda android.provider.Contacts.Phones.NAME + “ ASC” // Orden de los resultados );
/*
/* Sobreescribimos el evento click de los items.
// Todo listo, ala Android, apañatelas tu y muestra los resultados ;-) lista.setAdapter(adapter);
} catch (Exception e) { // Si algo falla mostramos en una ventana de dialogo el mensaje de error new AlertDialog.Builder(this) .setMessage(e.toString()) .setCancelable(false) .setPositiveButton(R.string.terminar, new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { finish(); // Al pulsar sobre el boton la aplicacion se cerrará } }) .show(); }
} } [/java]