Bienvenidos sean a este post, hoy hablaremos sobre los distintos esquemas de permisos, sus nombres y para que tipo de accion estan apuntados. A partir de Android 6.0, el S.O divide en dos tipos de permisos, los permisos peligrosos y los permisos normales, los primeros el usuario puede concederlos o retirarlos, tal como vimos en el post de la grabadora debemos permitirle acceder al microfono y a la memoria, mas alla de estar habilitado en AndroidManifest.xml, pasemos a ver como son los permisos.

Permisos Peligrosos

Almacenamiento externo:

  • WRITE_EXTERNAL_STORAGE, permite escribir, modificar y eliminar contenido de nuestra memoria externa, deben ser concedidos para las apps que necesitan crear, modificar o leer algun dato desde un archivo de nuestra memoria.
  • READ_EXTERNAL_STORAGE, da la posibilidad de permitir el acceso de lectura a todos los archivos de la memoria externa.

Ubicacion:

  • ACCESS_COARSE_LOCATION, permite localizacion no detallada, esta es basada en la red de telefonia movil (Cell-ID) y el Wi-Fi, si bien es mas practico el GPS este todavia se utiliza para lugares cerrados donde no hay señal de GPS.
  • ACCESS_FINE_LOCATION, permite una localizacion detallada, esta es por medio del GPS, si se concede este permiso tambien se habilita el permiso anterior para obtener una mejor ubicacion.

Telefonia

  • CALL_PHONE, permite a la app poder realizar llamados directamente por medio de la red telefonica movil, esto debe ser muy bien evaluado si la app necesita este tipo de acceso porque tiene costo
  • READ_PHONE_STATE, consulta el identificador y estado del telefono, es muy util por ejemplo para los juegos y que se pongan en pausa cuando recibamos una llamada, lo malo es que concedemos acceso al IMEI, el identificador unico de Google e inclusive el numero de la terminal que esta llamando
  • READ_CALL_LOG, permite leer el registro de llamadas telefonicas
  • WRITE_CALL_LOG, permite modificar el registro de llamadas telefonicas.
  • ADD_VOICEMAIL, permite crear nuevos mensajes de voz en el sistema.
  • USE_SIP, permite a nuestra app utilizar el protocola SIP (Session Initial Protocol), protocolo para hablar en VoIP (Voz sobre IP)
  • PROCESS_OUTGOING_CALLS, permite procesar llamadas salientes, desde controlar, modificar o abortar las llamadas salientes.

Mensajes de Texto (SMS)

  • SEND_SMS, permite a la app la posibilidad de enviar mensajes de Texto sin autorizacion del usuario, lo recomendables es habilitarlo solo si es necesario porque tiene costo
  • RECEIVE_SMS, nos da la posibilidad de poder recibir los mensajes de texto
  • READ_SMS, permite la posibilidad de poder leer los mensajes de texto entrantes
  • RECEIVE_MMS, permite recbir mensajes de tipo MMS, tambien concediendo la posibilidad de acceder a ellos.
  • RECEIVE_WAP_PUSH, permite recibir mensajes de tipo WAP PUSH, este tipo de mensajes son una variante de los SMS donde recibimos la informacion necesaria para acceder a una pagina de tipo WAP sin necesidad de la URL

Contactos

  • READ_CONTACTS, permite la posibilidad la informacion de los contactos almacenadas en el dispositivo
  • WRITE_CONTACTS, permite la posibilidad de escribir y/o modificar informacion de los contactos
  • GET_ACCOUNTS, permite acceder a la lista de cuentas en el servicio de cuentas

Calendario

  • READ_CALENDAR, permite la posibilida de leer los elementos del calendario
  • WRITE_CALENDAR, permite la posibilida de escribir en el calendario pero no leerlos

Camara

  • CAMERA, permite el acceso a la camara y concede la posibilidad de tomar fotos y/o videos.

Microfono

  • RECORD_AUDIO, concede la posibilidad de poder grabar desde el microfono del dispositivo

Sensores corporales

  • BODY_SENSORS, concede acceso a los sensores encargados de monitorizar al cuerpo del usuario.

Permisos normales

Comunicaciones

  • INTERNET, concede la posibilidad de poder conectarse a traves de internet.
  • ACCESS_NETWORK_STATE, nos concede informacion sobre todo el estado de las redes
  • CHANGE_NETWORK_STATE, nos concede la posibilidad de cambiar el estado de la red
  • NFC, permite realizar operaciones de red a traves de NFC (Near Field Communication)
  • TRANSMIT_IR, habilita la transmision por infrarrojos, util para controlar electrodomesticos por control remoto

Conexion WI-FI

  • ACCESS_WIFI_STATE, permite ver el estado y todas las wi-fi disponibles
  • CHANGE_WIFI_STATE, permite cambiar el estado de wi-fi
  • CHANGE_WIFI_MULTICAST_STATE, permite ingresar al modo multicast wifi y cambiar su estado

Bluettoth

  • BLUETOOTH, permite crear una conexion de bluetooth entre dos dispositivos pero antes deben estar emparejados
  • BLUETOOTH_ADMIN, permite descubrir y emparejarse con otros dispositivos

Consumo de bateria

  • WAKE_LOCK, impide que el dispositivo entre en modo suspension, ideal para el GPS
  • FLASHLIGHT, permite encender el flash de la camara
  • VIBRATE, permite hacer vibrar el telefono

Aplicaciones

  • RECEIVE_BOOT_COMPLETED, se inicia al encender el dispositivo, permite a una aplicacion recibir el estado ACTION_BOOT_COMPLETED pudiendo permitir a la misma arrancar cuando se cumpla
  • BROADCAST_STICKY, permite el envio de anuncios broadcast permanentes, por ejemplo el estado de la bateria
  • KILL_BACKGROUND_PROCESSES, permite matar procesos de fondo, es igual al metodo que usa el sistema para liberar memoria
  • REORDER_TASKS, permite a la aplicacion ordenar la lista de tareas
  • INSTALL_SHORTCUT, permite instalar o añadir accesos directos
  • UNINSTALL_SHORTCUT, permite desinstalar o quitar accesos directos
  • GET_PACKAGE_SIZE, permite obtener el tamaño del paquete
  • EXPAND_STATUS_BAR, permite a una aplicacion expandir o contraer la barra de estado

Configuraciones del sistema

  • CHANGE_CONFIGURATION, permite cambiar la configuracion del sistema
  • SET_WALLPAPER, permite establecer el fondo de pantalla
  • SET_WALLPAPER_HINTS, permite a la aplicacion dar sugerencias de fondo de pantalla
  • SET_ALARM, permite establecer una alarma o un temporizador en la aplicacion Reloj
  • SET_TIME_ZONE, permite cambiar la zone horaria
  • ACCESS_NOTIFICATION_POLICY, permite conocer las politicas de notificaciones del sistema

Audio

  • MODIFY_AUDIO_SETTINGS, permite cambiar ajustes globales de audio, p.e. volumen.

Sincronizacion

  • READ_SYNC_SETTINGS, permite leer los ajustes de sincronizacion
  • WRITE_SYNC_SETTINGS, permite registrar la aplicacion como adaptador de sincronizacion
  • READ_SYNC_STATE, lee las estadisticas de sincronizacion

Ubicacion

  • ACCESS_LOCATION_EXTRA_COMMANDS, permite acceder a comandos adicionales de los proveedores de localizacion

Seguridad

  • USE_FINGERPRINT, permite usar el hardware de reconocimiento de huella digital
  • DISABLE_KEYGUARD, permite desactivar el bloqueo de teclado

Este es un listado de los permisos que utilizaremos mas habitualmente para poder habilitar en nuestra aplicaciones, los peligrosos se consideran asi por el hecho de poder ser activados inclusive sin la autorizacion del usuario pero a partir de Android 6.0 esto es mas dificil pero si hay que tenerlo en cuenta para sistemas mas viejos y estos pueden ser de cierto riesgo, las normales como se ven son mas estandard y no inciden en la seguridad del usuario.
En resumen, hoy hemos visto que los permisos se dividen en dos categorias, peligrosos y normales, hemos visto un breve listado de los distintos permisos que utilizaremos en nuestras apps, algunos seran mas utiles que otros, espero les haya sido util sigueme en Twitter, Facebook o Google+ para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios