Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Android - Permission.internet: Ejemplo
Android - Permission.internet: Ejemplo
Una de las funcionalidades habituales de la que quiere disponer una aplicación es la capacidad de
intercambiar información con un servidor remoto, bien sea sobre una red privada o sobre Internet.
La duración de un intercambio con un servidor, es decir, el tiempo entre la construcción / envío del
mensaje, y el retorno / análisis de la respuesta, depende de muchos factores:
La construcción y el envío de la consulta, que puede llevar más o menos tiempo según la
potencia del dispositivo Android y la complejidad de la consulta.
El tiempo de respuesta del propio servidor que puede tardar varios segundos, o decenas de
segundos, antes de enviar una respuesta.
Para poder comunicarse con un servidor remoto, la primera etapa consiste en dotar a la aplicación de
los permisos para abrir sockets de red. Para ello, hay que agregar
el permiso android.permission.Interneten el manifiesto.
Ejemplo
Android incluye la librería HTTP Apache que permite utilizar el protocolo HTTP de forma sencilla. Esta
librería contiene numerosas clases y métodos. Dado que no es específica de Android, no detallaremos
más que algunas de sus clases y ciertos métodos.
Desde la versión 2.2 (API 8), Android proporciona también la clase An droidHttpClient que
implementa la interfaz Htt pClient, configurada especialmente para Android. Esta clase prohíbe, en
concreto, el envío de consultas HTTP desde el thread principal, elevando una excepción.
Ejemplo
Veamos cómo utilizar las clases y los métodos más utilizados de estas librerías para enviar una
consulta a un servidor remoto y recuperar la respuesta.
1. Agente usuario
El user-agent (agente usuario) es una cadena de caracteres incluida en el encabezado de una
consulta HTTP enviada por un cliente a un servidor. Permite identificar el sistema del cliente indicando,
por ejemplo, el nombre de la aplicación cliente, su versión…
El servidor puede entonces utilizar esta información para adaptar mejor su respuesta. Por ejemplo,
un servidor web podrá detectar que el cliente es un navegador de un dispositivo móvil. Podrá,
entonces, redirigir automáticamente la petición hacia la versión móvil del sitio web.
En el caso en que el desarrollador Android gestione también la parte servidora, puede ser
interesante para él construir un agente usuario proporcionando la máxima información posible sobre
el dispositivo, el sistema y la aplicación Android. Esto le permitirá ver en detalle qué dispositivos, qué
sistemas y versiones del sistema, y qué versiones de las aplicaciones poseen los usuarios.
Para obtener la información asociada al sistema, podemos utilizar algunas de las constantes que
proporciona la clase android.os.Build. Los valores de estas constantes son cadenas de
caracteres.
Sintaxis
Build.MODEL
Ejemplo
Sintaxis
Build.VERSION.RELEASE
Ejemplo
Sintaxis
Build.DISPLAY
Ejemplo
El código del idioma así como el código regional configurado por el usuario en el sistema Android
también pueden recuperarse. Para ello, hay que usar la clase L ocaley su método getDefault.
Este método devuelve una instancia de tipo L ocale. El uso del método toString permite
recuperar el código del idioma así como el código regional concatenados en forma de cadena de
caracteres. Los valores devueltos pueden ser, por ejemplo: en_US, es_ES, fr_FR, bg_BG, zh_TW…
Sintaxis
Ejemplo
Android permite obtener información sobre las aplicaciones. En nuestro caso, esto permite recuperar
esta información de forma dinámica en lugar de incluirla directamente en nuestro código. El código no
se habrá modificado tras la actualización de la aplicación y podrá reutilizarse para otras aplicaciones.
Ejemplo
Ejemplo
Sintaxis
Ejemplo
Queda por recuperar la información del objeto de tipo PackageInfoaccediendo directamente a sus
variables miembros p ackageNamey versionNameproporcionando, respectivamente, el nombre
del paquete y el número de versión de la aplicación.
Ejemplo
La cadena de caracteres agente usuario puede, así, estar constituida por toda esta información.
Ejemplo
2. AndroidHttpClient
Para describir el envío de una consulta y la recepción de la respuesta del servidor, supondremos que
el servidor remoto acepta una petición HTTP GE Ty envía una respuesta bajo la forma de una cadena
de caracteres como, por ejemplo, una respuesta con formato JSON.
Android incluye la librería org.json que contiene lo necesario para leer respuestas con
formato JSON. Para más información sobre el formato JSON: http://www.json.org/.
Desde Android 3.0 (API 11), la librería org.json proporciona las nuevas
clases J sonReadery JsonWriterque permiten, respectivamente, leer y escribir de forma
sencilla un flujo JSON.
La petición GETse crea fácilmente con la clase HttpGety uno de sus constructores recibe como
parámetro la dirección completa del sitio.
Sintaxis
Ejemplo
Sintaxis
Ejemplo
AndroidHttpClient httpClient =
AndroidHttpClient.newInstance(agenteUsuario);
Es preciso, evidentemente, que el dispositivo Android esté conectado a la red mediante Wi-Fi o
mediante la red de telefonía móvil, por ejemplo, o en caso contrario se elevará una excepción
de tipo java.net.UnknownHostException, que hereda del tipo IOException.
Sintaxis
De este modo, el método e xecute devuelve la respuesta del servidor en forma de cadena de
caracteres si recibe como parámetro un objeto de tipo B asicResponseHandler, y eleva las
excepciones llegado el caso.
Sintaxis
Ejemplo
Una vez finalizada la comunicación, el cliente debe cerrar las conexiones y liberar los recursos
reservados invocando a su método cl ose.
Sintaxis
Ejemplo
try {
...
} finally {
httpClient.close();
}