Permisos en Android 6.0 o superior

Una de las muchas novedades que han mostrado los sistemas Android de la versión 6.0 en adelante ha sido el manejo por parte del usuario de los permisos a las aplicaciones que instalan, en versiones anteriores las aplicaciones le mostraban al usuario los permisos que requerían y si el usuario no estaba de acuerdo con dar alguno de estos permisos tenía que prescindir de esa aplicación, por eso en las nuevas versiones Google decidió que el usuario tuviera la capacidad de quitarle los permisos que no necesitara a cada aplicación que instala, lo cual desde el punto de vista de usuario resulta muy cómodo pero para nosotros como desarrolladores Android nos ha hecho variar la forma que teníamos de programar nuestras aplicaciones. Por ejemplo, en versiones inferiores a 6.0 cuando queríamos que nuestra aplicación tuviera permisos de escritura en la memoria externa del teléfono solo agregábamos lo siguiente en el Manifest

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

 

Pero si usas una aplicación programada de esta forma en versiones de 6.0 en adelante te darás cuenta que no funciona y que tu aplicación cuando tenga que escribir en la memoria del teléfono se cerrara. ¿Cómo resolver este problema?, pues es bastante sencillo, tenemos que hacer que el usuario nos de los permisos requeridos cuando la aplicación necesite hacer uso de los mismos, cabe aclarar que una vez que el usuario de estos permisos ya no necesitamos volverlos a pedir, pero bueno si más preámbulo vamos al código

Lo primero que haremos será declarar una variable global en nuestra activity que será la encargada de

private static final int MY_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE = 1;

 

Luego dentro del onCreate() escribiremos lo siguiente:

if(ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED)
{
if(ActivityCompat.shouldShowRequestPermissionRationale(this,Manifest.permission.WRITE_EXTERNAL_STORAGE))
{

}

else
{
ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},MY_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE);

}
}

aquí lo que estamos haciendo es comprobando si la aplicación tiene los permisos o no, en caso que nos los tenga entra en la condición y en la condición siguiente será donde si queremos le podemos mostrar al usuario a través de un AlertDialog o cualquier otro recurso cuales son los permisos que necesitamos y para qué y el en caso del else lo que hacemos es simplemente pedir los permisos de la forma que Android lo hace normalmente, luego fuera de estas condiciones ejecutamos el algoritmo que hace uso de los permisos, claro está que si el usuario no da los permisos no van a funcionar y por tanto tendremos que buscar una alternativa de funcionamiento sin el uso de permisos.

Ya por ultimo fuera del onCreate() hacemos uso del método onRequestPermissionsResult()

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode == MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE || requestCode==MY_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE)
{
if(grantResults.length>0 && grantResults[0]==PackageManager.PERMISSION_GRANTED)
{

}
else
{

}

return;
}
}

 

Y lo que hacemos es comprobar si ya el usuario concedió los permisos, en caso de que lo haya hecho podemos proseguir con nuestra aplicación y en caso de que no pues le volvemos a pedir que lo haga.

Bueno espero que este pequeño tutorial les sirva de mucho y lo tengan en cuenta en cada aplicación que hagan que requiera permisos para que pueda ejecutarse en todas las versiones de Android sin problemas, cualquier duda o sugerencia la pueden dejar en los comentarios.

Share
Soy Ingeniero en Ciencias Informáticas, me encanta programar sobre todo en C# y Android

One thought on “Permisos en Android 6.0 o superior

Deja un comentario

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