Curso de desarrollo Android. Tema 14: los permisos de las aplicaciones en el archivo AndroidManifest.xml
Como medida de seguridad, Android no permite que ninguna aplicación acceda a ciertos elementos del sistema operativo siempre y cuando no pida permiso para ello e informe así al usuario de hasta dónde va a poder tener accedo una determinada aplicación. Por ello, durante el proceso de desarrollo en Android de una aplicación, un juego o simplemente un recurso, los desarrolladores deben definir en el fichero de manifiesto todos los apartados del dispositivo a los que podrá acceder su aplicación.
Gracias a los permisos, por ejemplo, podremos evitar que una aplicación malintencionada pueda acceder, por ejemplo, a enviar SMS a números de tarificación adicional salvo que esté especificado en sus permisos, sabiendo así el usuario que dicha aplicación va a tener acceso a los mensajes de texto y a poder enviar mensajes a números externos, algo que, por ejemplo, según la aplicación que estemos instalando, puede ser algo sospechoso.
Dentro del ecosistema del desarrollo Android existen un gran número de permisos diferentes. Algunos de los más utilizados en las aplicaciones son:
- ACCESS_WIFI_STATE. Nos permite conocer el estado de la conexión Wi-Fi.
- INTERNET. Permite a la aplicación salir a Internet. Sin este permiso, la aplicación no establecería conexión.
- READ_CALENDAR, READ_CONTACTS. Todo lo relacionado con READ nos va a indicar que la aplicación tiene permiso para «leer» la información de ciertos elementos, como el calendario o los contactos.
- WRITE_CALENDAR, WRITE_CONTACTS. Al igual que REAL, WRITE nos indica que la aplicación va a poder «escribir» información en ciertos elementos del sistema.
- BLUETOOTH. La aplicación puede acceder al bluetooth, para ver el estado, enviar o recibir información.
- CAMERA. La app podrá hacer uso de la cámara para tomar fotografías o hacer vídeos.
En el blog oficial de programadores de Android encontraremos una lista completa con todos los permisos.
En las últimas versiones de Android, cuando un determinado permiso puede permitir a la aplicación realizar acciones de pago (por ejemplo, hacer llamadas o enviar SMS), Android nos lo indicará como «permisos críticos«, y debemos estar seguros de que la aplicación es de confianza antes de instalarla.
Cómo declarar los permisos de nuestra aplicación en Android Studio
Los permisos, junto a otra serie de especificaciones, van definidos dentro de un fichero obligatorio en todo proyecto Android llamado AndroidManifest.xml. Este fichero, en Android Studio, se encuentra ubicado en la ruta del proyecto app/manifests.
Al abrir con el editor este fichero podremos ver algo similar a lo siguiente:
Según lo que vaya a hacer nuestra aplicación y a qué apartados del dispositivo necesita acceder, debemos añadir, uno a uno, todos los permisos añadiendo en este archivo de manifiesto la siguiente línea:
- <uses-permission android:name=»android.permission.INTERNET»/>
Obviamente, debemos cambiar INTERNET por el permiso concreto que vamos a utilizar de entre todos los posibles. Un ejemplo de una aplicación con varios permisos sería la siguiente:
Android Studio nos ofrece una ayuda muy completa a la hora de añadir los permisos. Por ello, simplemente escribiendo en el fichero AndroidManifest <uses-permission nos aparecerá la opción de autocompletar la entrada junto a una lista con todos los permisos disponibles para Android.
Una vez especificamos un permiso, la aplicación podrá hacer uso del recurso correspondiente y a la hora de instalarla, el usuario sabrá lo que podrá y no podrá hacer una determinada aplicación. Sin embargo, si olvidamos definir uno (por ejemplo, el acceso a la cámara), la aplicación no podrá hacer uso de ella. Por más que lo intente, Android no le dejará acceder a ella.
Cómo ve el usuario final los permisos de la aplicación
Los programadores definen los permisos, entre otras razones, para que los usuarios finales sean capaces de saber qué va a poder y qué no va a poder hacer la aplicación, evitando el uso de todas aquellas que, por ejemplo, tengan permiso para enviar SMS o para acceder a la agenda.
Tanto la Play Store como Android son los responsables de mostrar al usuario todos los permisos de las aplicaciones. De esta manera, en la tienda vamos a poder ver un resumen de los mismos antes de descargarla a nuestro dispositivo de manera que si algo no nos parece normal, podamos dar marcha atrás y no descargar la aplicación.
Si en vez de desde la Play Store intentamos instalar una aplicación desde el archivo apk, el propio sistema Android nos mostrará también un resumen con todos los permisos.
Una buena costumbre, aunque no la tienen todos los programadores, es explicar en la descripción de la app al publicarla el por qué de cada permiso. De esta manera, los usuarios pueden saber por qué la aplicación pide permiso para acceder a ciertos recursos, sin embargo, esto no es obligatorio y, al final, depende de cada programador el ser sincero u ocultar la información.