En esta página:
Cuando le mejoras la experiencia de usuario a tu aplicación hace que el usuario la ame más, la recomiende y se haga muy popular, hay aplicaciones que cuando la descargan desde la Play Store suelen solicitarte ciertos permisos que hacen que el proceso de instalación de la aplicación sea muy tedioso, pero si es necesario o por seguridad solicitar los permisos durante la instalación esta bien, pero si no es mejor que los solicites cuando la aplicación este instalada y ejecutándose en el móvil, en este articulo te explicaremos como hacer para que un aplicación solicite permisos mientras esta ejecutándose.
Desde la versión 6 de Android (API 23) es posible conceder permisos a los usuarios mientras una aplicación está ejecutándose, obviamente esto cuando la App ya este instalada en el equipo móvil.
Esta manera de solicitar permisos mientras la App se ejecuta brinda un mayor control sobre la App, pongamos como ejemplo cuando un Usuario brinda permisos a la función de SMS pero no brinda permisos para la Geolocalización en su equipo, asi mismo el usuario podrá revocar los permisos cuando desee desde su Activity de Configuración de la App.
Tipos de Permisos
Los permisos en Android se dividen en dos básicamente, Permisos Normales y Permisos Riesgosos.
Permisos Normales
Cuando el usuario brinda este tipo de permisos en la App no pone en riesgo su privacidad de manera directa.
Si le asignas los permisos a una funcionalidad del móvil en el archivo Manifest de la App, el sistema concederá el permiso automáticamente a la funcionalidad.
Permisos Riesgosos
Este tipo de permisos pueden poner en riesgo la información privada del usuario. Para este tipo de permisos es necesario implementar la solicitud de permiso para acceder a una funcionalidad específica del móvil.
Dentro de los permisos riesgosos hay grupos de permisos y dentro de los grupos los permisos que le corresponden, veamos esto en la siguiente tabla
Grupo de Permisos | Permisos |
Permisos al Calendario Android | CALENDAR | READ_CALENDAR
WRITE_CALENDAR |
Permisos a la Cámara de Android | CAMERA | CAMERA |
Permisos a los Contactos de Android | CONTACTS | READ_CONTACTS
WRITE_CONTACTS GET_ACCOUNTS |
Permisos a la Ubicación GPS de Android | LOCATION | ACCESS_FINE_LOCATION
ACCESS_COARSE_LOCATION |
Permisos al micrófono de Android | MICROPHONE | RECORD_AUDIO |
Permisos al teléfono de Android | PHONE | READ_PHONE_STATE
CALL_PHONE READ_CALL_LOG WRITE_CALL_LOG ADD_VOICEMAIL USE_SIP PROCESS_OUTGOING_CALLS |
Permisos al sensor de Android | SENSORS | BODY_SENSORS |
Permisos para usar SMS en Android | SMS | SEND_SMS
RECEIVE_SMS READ_SMS RECEIVE_WAP_PUSH RECEIVE_MMS |
Permisos para usar el Almacenamiento en Android | STORAGE | READ_EXTERNAL_STORAGE
WRITE_EXTERNAL_STORAGE |
Permisos en Android
Antes de solicitar un permiso a una función del móvil es importante verificar si ya existen previamente permisos brindados.
Comprobar si existen permisos
Si aplicación necesita acceder a un grupo de permisos riesgosos y acceder a uno de sus permisos, debes comprobar cada ves que sea necesario si ya existe el permiso, este permiso el usuario siempre va poder revocarlo cuando desee. Si el usuario un día anterior brindo el permiso para usar la ubicación GPS esto no significa que tendrá este permiso al siguiente y demás días.
Para comprobar si existe un permiso puedes usar el método ContextCompat.checkSelfPermission() , por ejemplo si necesitas verificar si el móvil tiene permiso para acceder al micrófono puedes hacer lo siguiente
1 2 3 4 5 |
// La aplicación esta en ejecución int permissionCheck = ContextCompat.checkSelfPermission(thisActivity, Manifest.permission.RECORD_AUDIO); |
Si se comprueba que la App ya tiene el permiso para acceder al micrófono del móvil entonces el método te imprimirá PackageManager.PERMISSION_GRANTED y podrá continuar con la operación deseada y por el contrario si la App aún no tiene el permiso se le imprimirá el mensaje PERMISSION_DENIED entonces la App tendría que solicitar el permiso.
Solicitar Permisos
Para que tu App solicite permisos de tipo riesgoso debes de enviarle una alerta al Usuario para que el decida si lo desea otorgar o no, esto para mantener el respeto a la privacidad del usuario.
Android nos brinda varios métodos para solicitar un permiso, cuando usas uno de estos métodos aparecerá una ventana de alerta o de diálogo estándar propia del mismo Android, por ejemplo si solicitas el permiso a la cámara del móvil, aparecerá un mensaje como el siguiente
Es importante mencionar al usuario el porque le estas solicitando un permiso a una determinada funcionalidad del móvil. Para explicar al usuario cual es el motivo por el que le estas solicitando el permiso puedes usar el método shouldShowRequestPermissionRationale() si el usuario rechaza el permiso y no lo brinda se imprime el mensaje false.
Para solicitar el permiso a un función del móvil puedes usar los métodos de requestPermissions() y el móvil brindará el permiso solicitado por la App, por Ejemplo si necesitas permiso para usar la cámara del móvil puedes escribir lo siguiente
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
// La App esta en ejecución if (ContextCompat.checkSelfPermission(thisActivity, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { // Explicamos porque necesitamos el permiso if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity, Manifest.permission.CAMERA)) { // Acá continuamos el procesos deseado a hacer } else { // El usuario no necesitas explicación, puedes solicitar el permiso: ActivityCompat.requestPermissions(thisActivity, new String[]{Manifest.permission.CAMERA}, MY_PERMISSIONS_REQUEST_CAMERA); // } } |
El código puede cambiar, esto depende de lo que quieras hacer, pero con que entiendas la base para solicitar permisos podrás hacer procesos más complejos en tu App.
Síguenos en las Redes Sociales para que no te pierdas nuestros próximos contenidos.