Tras una ajetreada semana en el universo android con la actualización oficial de froyo, el más que feliz cumpleaños de el androide libre, presentación de lo nuevo de motorola, etc, continuamos con la tercera entrega de aprendiendo android, para los curiosos del «como se hace» ;)
A diferencia del último capítulo donde principalmente nos centramos en ver como se estructuraba una aplicación en relación a las actividades o llamadas de recursos, en esta ocasión nos centraremos como hemos adelantado alguna vez en «Snippets» o recortes de programación, pequeños o no tan pequeños trozos de código que pueden resultar de mucha utilidad en nuestras aplicaciones. En internet existen muchas páginas o secciones de ellas que recogen gran cantidad de estos recortes, una vez más no debemos olvidar que en este «mundillo», como en muchos otros, google es un grandísimo aliado.
Vamos a recoger una pequeña lista de algunos de estos snippets que nos puedan resultar más útiles… Siempre dependiendo de nuestro objetivo final, claro está.
¿COMO ENVIAR UN SMS DESDE NUESTRA APLICACIÓN?
Esta es quizá una de las preguntas más repetidas en muchos foros de programación, intentemos responderla con un recorte de la manera más clara posible.
Lo primero, ya que en ocasiones por dejarlo para último lugar puede olvidarse, vamos a intentar evitarnos algunos quebraderos de cabeza incluyendo antes de escribir el código el permiso de envío sms en nuestro manifest. El permiso concreto sería:
<uses-permission android:name=»android.permission.SEND_SMS»></uses-permission>
Una vez hecho esto, el código estaría construido así:
private void envioSMS()
{
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(«600000000», null, «El androide libre», null, null);
}
…Donde «650000000» sería el número de teléfono al que enviamos el mensaje y «El androide libre» el texto de este.
Los campos cuartos y quintos del sendtextMessage sirven para controlar el envío y recepción del mensaje, esto si es de interés del lector, podemos ampliarlo en próximas entregas,
ESCUCHANDO LAS TECLAS FÍSICAS DEL TELÉFONO
Cambiemos de tercio, en las pasadas entregas vinos lo que eran los «listeners» o escuchadores de botones, instrucciones para indicarle a nuestra aplicación que tenía que reaccionar cuando se pulsa un botón que hemos creado, bien, pues en esta ocasión vamos a ver como hacer reaccionar a nuestro programa al detectar la pulsación de (aunque cada vez tengamos menos) un botón físico de nuestro teléfono.
La base de funcionamiento sería la misma que las vistas las pasadas entregas, pero lógicamente existen variaciones, el código sería el siguiente:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK) {
Toast.makeText(disclaimer.this, «Has pulsado Atras», Toast.LENGTH_SHORT).show();
}
return true;
}
Sobre este código puntualizaremos dos cosas, La primera es que observaremos que en este ejemplo estamos pidiendo que la acción se ejecute al pulsar las tecla del teléfono volver (KEYCODE_BACK), lógicamente podemos indicar que sean las diferentes teclas del terminal las que ejecuten la acción tras la pulsación, en este enlace de la documentación oficial de android tenemos la relación de la nomenclatura de todas las posibles teclas físicas a asignar como keyevent.
http://developer.android.com/intl/de/reference/android/view/KeyEvent.html
En segundo lugar puntualizar que aunque conste en la documentación como tecla disponible para asignar al listener, android no permite intervenir la tecla «home», por lo que aunque asignemos una función a este botón invariablemente siempre va a cumplir la acción de llevarnos a la pantalla inicial.
ABRIR UN NAVEGADOR DESDE NUESTRA APLICACIÓN
Otra pregunta frecuente, o al menos eso parece, es la de como acceder a una página web desde nuestra aplicación. Realmente existen diferentes formas o métodos de hacer esto, depende también de lo que queramos exactamente, por ejemplo, podernos incrustar una página web en nuestro programa o como vamos a ver a continuación, podemos abrir directamente el navegador por defecto ya con la dirección que le especifiquemos.
Comentar en este punto que esta acción no requiere de permiso en el manifest ya que nuestra aplicación en ningún momento esta accediendo a internet, es el navegador del teléfono quien lo hace.
Como no podía ser de otra forma, la manera de hacerlo es mediante intents
Intent intent1 = null;
intent1 = new Intent(«android.intent.action.VIEW», Uri.parse(«https://elandroidelibre.elespanol.com»));
startActivity(intent1);
…Donde sustituiremos «elandroidelibre» por la dirección que elijamos.
LECTURA DE DATOS DE NUESTRO TERMINAL
Dependiendo de lo que estemos realizando, como todo, puede sernos de mucha utilidad el conocer algunos datos fijos o variables que use nuestro teléfono, como valores fijos puedes entender por ejemplo el imei del terminal y como valores variables, por ejemplo, la numeración de la tarjeta sim.
Para la lectura de este tipo de datos android usa TelephonyManager, veamos como sería la lectura de un imei:
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String imei = tm.getDeviceId(); // getDeviceId() Obtiene el imei
Añadimos un mensaje tipo toast (Explicación de mensajes toast en primera entrega) para ver por pantalla el resultado de la solicitud de este imei:
Toast.makeText(elAndroideLibre.this, imei, Toast.LENGTH_SHORT).show();
Evidentemente no es solo la lectura de este dato la que se hace posible, en el siguiente enlace de la, de nuevo, documentación oficial de android tenemos la relación de los valores posibles (ver Public Methods).
http://developer.android.com/intl/de/reference/android/telephony/TelephonyManager.html
En este ejemplo hemos obtenido el imei, donde en el código se identifica con getDeviceId() y lo hemos pasado a una cadena String, probemos a modificar este valor por otros disponibles especificados en el enlace de la documentación.
También sobre este tema vamos a comentar dos puntos, en primer lugar es que a este respecto, en muchas ocasiones, se plantea la pregunta de por que cuando estamos leyendo el número de teléfono algunas veces tenemos acceso a la lectura de este dato y otras veces no… Android está leyendo el número de teléfono de la información contenida en la tarjeta sim que tenga puesta del teléfono. Hay operadores que tienen volcado en número de teléfono como tal en la sim y otros que no, por esto con operadores como Orange o Vodafone veremos este valor y por ejemplo con Simyo, no.
El segundo punto a tener en cuentas es el siempre importantísimo permiso en el manifest para leer estos datos, en este caso nos ocuparía el siguiente permiso:
<uses-permission android:name=»android.permission.READ_PHONE_STATE»></uses-permission>
Es interesante recordar que estos recortes de códigos o snippets que hemos visto hoy pueden ser aplicados a nuestros listados de muchas y diversas formas, es muy recomendable el copiarlos e ir probando a ajustarlos a diferentes tesituras …La curiosidad es unas de nuestras mejores aliadas amigas.
Para la próxima entrega os prepararé las explicación de dos temas también muy demandados, el como firmar nuestras aplicaciones y manual de como subirlas al market y actualizarlas.
Mientras tanto, como siempre, recordar que cierto es que las programación requiere de conocimientos, pero sobre todo de ganas, ilusión y originalidad… Así que ánimo a todo el mundo ;)
Vierco.