Como hacer una aplicación #Android que solicite permisos

¡Comparte nuestro contenido!

¿Necesitas desarrollar una aplicación que requiera ciertas partes del sistema Android, y no sabes cómo lidiar con el asunto de los permisos? En esta ocasión te diremos como trabajar esa parte, sólo tomemos una consideración importante. A partir del API 23 también conocida como Android 6.0 o Marshmallow, las aplicaciones solicitan los permisos necesarios al usuario en tiempo de ejecución y no durante a instalación. Dicho eso, manos a la obra.

Iniciemos una nueva aplicación

Iniciemos Android Studio, e inmediatamente seleccionamos Start a new Android Studio project. En la ventana Create New Project, seleccionamos Empty Activity (Actividad vacía)

Como hacer una aplicación Android que solicite permisos - CableNaranja

Presionamos Next y llamamos a nuestro activity MisPermisos, luego presionamos Finish.

Como hacer una aplicación Android que solicite permisos - CableNaranja

¿Cómo funcionan los permisos en Android?

Antes de elegir los permisos, debemos tomar en cuenta que Android clasifica los permisos en tres grupos:

  • Permisos normales: Son aquellos que representan un nivel bajo de peligro para la privacidad de los usuarios, cosas como saber el estado de la red, activar Bluetooth, cambiar el papel tapiz, etc.
  • Permisos firmados: Suelen solicitarse al momento de la instalación de la aplicación, no son permisos comunes. Vincular el servicio NFC, conectar a un servicio VPN, modificar el contenido del buzón de voz, son ejemplos de este tipo de permisos.
  • Permisos de riesgo: Como su nombre indica, representan un riesgo potencial en la privacidad del usuario. Permisos como leer o escribir en la tarjeta externa, activar o desactivar la cámara son ejemplos claros.

Todos los permisos vienen por default en la colección permission del objeto Manifest.

Seleccionamos los permisos para nuestra aplicación

En este ejemplo, haremos una simple aplicación que solicite permisos para acceder a la memoria interna / externa del dispositivo, necesitaremos dos permisos de riesgo:

  • READ_EXTERNAL_STORAGE: Para operaciones de lectura
  • WRITE_EXTERNAL_STORAGE: Para operaciones de escritura

Metemos ambos permisos en un array.

También necesitamos una variable de entera de tipo final static con un valor inicial aleatorio. Por último, usemos un Toast para notificar si obtuvimos los permisos o no.

private final static int MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE = 1;
private static String[] PERMISOS = {
   Manifest.permission.READ_EXTERNAL_STORAGE,
   Manifest.permission.WRITE_EXTERNAL_STORAGE
};
Toast toast;

Y se ve así.

Como hacer una aplicación Android que solicite permisos - CableNaranja

Creando una función para comprobar los permisos

Hagamos un método para este trabajo, le llamaremos permisos.

private void permisos(){
}

A través del método checkSelfPermission del objeto ContextCompact haremos que nuestra aplicación revise los permisos, podemos enviarle dos parámetros: el contexto de la aplicación (en este caso this) y el permiso que vamos a revisar, en nuestro ejemplo usamos dos permisos, pero como el permiso de escritura trae implícita la lectura, usaremos ese para revisar.

int permissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE);

Luego, a través de la constante PERMISSION_GRANTED del objeto PackageManager revisaremos el momento en el que la aplicación todavía no se le han concedido los permisos.

// Si aún no tiene el permiso concedido
if(permissionCheck!= PackageManager.PERMISSION_GRANTED){
}

A través del objeto ActivityCompact, invocaremos al método shouldShowRequestPermissionRationale que muestra la típica ventana que explica el uso de los permisos con los botones Rechazar y Permitir. Los parámetros de este método son: el contexto de la aplicación (en este caso this) y el permiso solicitado.

if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.WRITE_EXTERNAL_STORAGE))

Si la ventana de petición ya fue usada (else) simplemente verificamos los permisos sin la ventana de explicación. esto lo hace el método requestPermissions del objeto ActivityCompact. Lleva tres parámetros: El contexto de la aplicación, Los permisos y la variable aleatoria de tipo final static.

else{
   ActivityCompat.requestPermissions(this, PERMISOS, MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE);
}

Nuestra función debe quedar así:

Como hacer una aplicación Android que solicite permisos - CableNaranja

Revisando el resultado de la solicitud de permisos

Lo siguiente, es sobrecargar el método onRequestPermissionsResult que como su nombre indica, revisa el resultado de la solicitud. Lleva tres parámetros:

  • requestCode: Un valor entero de tipo final static. Básicamente es la misma variable que usamos antes en el método requestPermissions.
  • permissions: Un array con los permisos solicitados.
  • grantResults: Un array con un valor de respuesta por cada permiso solicitado.
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults){
}

Usaremos una variable de tipo String para el mensaje que vamos a enviar en el Toast.

String mensaje = "";

Lo siguiente que necesitamos saber es la longitud de grantResults, si está es mayor a cero, significa que tenemos permisos. También checaremos la posición de cada permiso. En nuestro ejemplo, el arreglo sólo tiene un valor, así que revisaremos la posición 0, debe ser igual a la constante PERMISSION_GRANTED. Si todo es satisfactorio, colocaremos el mensaje “Permiso concedido”

if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
   mensaje = "Permiso concedido";
}

En caso contrario, colocaremos el mensaje “Permiso no concedido”

else{
   mensaje = "Permiso no concedido";
}

Preparamos y mostramos nuestro Toast.

toast = Toast.makeText(this, mensaje, Toast.LENGTH_LONG);
toast.show();

Debe verse así.

Como hacer una aplicación Android que solicite permisos - CableNaranja

Como pueden notar, hemos invocamos nuestro método permisos dentro de onCreate para que funcione correctamente.

Pongamos los permisos en el archivo Manifest.xml

Por último, colocaremos las dos líneas correspondientes a nuestros permisos solicitados en el archivo Manifest.xml, deben ir justo arriba de application.

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

Observe la imagen:

Como hacer una aplicación Android que solicite permisos - CableNaranja

Probando el resultado final

Veamos el resultado final (fullscreen en el video)

¿Te ha resultado? Déjanos saber en los comentarios aquí abajo, en nuestra cuenta de twitter @cablenaranja7 o en nuestra página de facebook.

¡Comparte nuestro contenido!

Israel García

Docente, IT Manager, Blogger & Developer. Escribo por diversión, educo por pasión. | Grandstanding is not my thing.

Podría también gustarte...

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

shares