La solicitud de permisos es algo esencial cuando estamos creando nuestra aplicación, ya que si el usuario no activa los permisos necesarios, las funciones de nuestra aplicación que los requiera no funcionarían, así que en este post voy a explicar cómo podemos comprobar si el usuario tiene los permisos necesarios activos, y en caso de no ser así, que sean solicitados en tiempo de ejecución de la App.
Solicitamos permisos pero con cautela!
Lo más importante a la hora de solicitar permisos es que no nos volvamos locos pidiendo al usuario que acepte una infinidad de permisos, porque lo más probable es que entonces el usuario los rechace o directamente no se descargue nuestra aplicación, y eso no es lo que queremos, así que es importante analizar bien los permisos que necesita nuestra aplicación y solicitar solo los justos y necesarios.
Una vez dicho esto, lo primero de todo os dejo por aquí el enlace de la web Android Developer donde explican todo lo relacionado con los permisos del sistema, además de un listado con los permisos considerados "peligrosos" que son los que nos interesan, ya que son los que realmente afectan al funcionamiento de la App si no son aceptados.
Android Developer -Permisos del sistema
Una buena de forma de asegurarnos de que le usuario acepte los permisos es ofreciéndole una breve descripción de porqué nuestra aplicación necesita que acepte esos permisos, como por ejemplo hacen WhatsApp y Telegram para acceder a los contactos.
Vamos a por el código!
Ahora que sabemos qué permisos necesitamos, lo primero sería especificarlos en el manifiesto de nuestro aplicación, así que para ello nos dirigimos al archivo AndroidManifest.xml y ahí los añadimos, pero OJO! Es importante que los coloquemos dentro de la etiqueta <manifest> y fuera de la etiqueta <application>, es decir, como en el siguiente ejemplo:
<manifest package="com.example.myapp" ... >
//AQUÍ POR EJEMPLO, ESTE SERÍA EL PERMISO PARA LA UBICACIÓN GPS
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
//Y A CONTINUACIÓN DE ÉSTE PODEMOS AÑADIR TODOS LO QUE NECESITEMOS
<application ... >
<activity android:name=".MainActivity" ... >
...
</activity>
</application>
</manifest>
Ahora vamos a la clase Java de nuestra actividad donde queramos hacer la comprobación y la solicitud del permiso, por ejemplo en la MainActivity.java
Vamos a usar el ejemplo la acción de que al pulsar un botón que tengamos preconfigurado compruebe si tenemos el permiso activo y si no es así que muestre el PopUp para que el usuario lo permita.
Si no sabéis como crear un botón y usar su función Click podéis aprenderlo en mi otro post: Android Studio - Función OnClick de Botón
Lo que tenemos que poner en la actividad:
public void solicitarpermiso (View view) {
//EN ESTA PARTE COMPROBAMOS SI EL PERMISO ESTÁ CONCEDIDO O NO
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED){
// Y AQUÍ SI NO ESTÁ CONCEDIDO HACEMOS QUE AL APP LO SOLICITE
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_ACCES_FINE); }
}
Y con eso ya lo tendríamos listo, pero ahora bien, ¿y si queremos ejecutar alguna acción diferente según si el usuario acepta o rechaza el permiso?, pues para eso debemos introducir a continuación el siguiente código:
@SuppressLint("WrongConstant")
@Override
public void onRequestPermissionsResult(int requestCode,
String[] permissions, int[] grantResults) {
switch (requestCode) {
case REQUEST_ACCES_FINE: {
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// AQUÍ EJECUTAMOS LA ACCIÓN SI EL USUARIO ACEPTA EL PERMISO :-)
} else {
// AQUÍ LA ACCIÓN SI EL USUARIO LO RECHAZA :-(
}
return;
}
}
Y con esto ya sí que lo tendríamos terminado para que nuestra aplicación puede solicitar el permiso que necesite y que además pueda actuar en función de la respuesta del usuario.
Espero que os haya sido de ayuda!
0 Comentarios