El arsenal de Android – Permisos

Por qué no necesitamos ser groseros para pedir permisos

ExcuseMe es una biblioteca de Android que proporciona una implementación de una línea para permisos de Android hechos con Kotlin.

  val  concedido : [19659004] booleano    =    excusa  .couldYouGive ( this ). permiso Para ( Android .  póster .  permiso [.  CÁMARA ) 

? ¿Por qué debería usar ExcuseMe?

  1. Mejor rendimiento con Kotlin Coroutines
    • Mejor rendimiento que otras bibliotecas que usan Thread porque usa menos memoria tienen un mejor rendimiento que los hilos para pequeños cambios en el hilo asincrónico / ui.
  2. Solicitud de autorización en una línea
    • ExcuseMe se puede utilizar con las funciones de suspensión de Kotlin que ofrecen una mejor sintaxis y una mejor legibilidad del código
  3. No hay más escuchas de interfaz para implementar
    • Con ExcuseMe, no es necesario implementar la interfaz callba cks para agregar simplemente el código repetitivo para mantener
  4. Puede usarse con devoluciones de llamada lambda
    • Si no sabe cómo implementar las funciones de suspensión, ExcuseMe podría usarse con devoluciones de llamada lambda Kotlin
  5. Forma educada de solicitar solicitudes
    • Por qué no necesitamos ser groseros para solicitar permisos

? Uso

ExcuseMe es la forma más fácil de implementar permisos en Android. Pero aún necesita agregar el permiso en el archivo AndroidManifest.xml.

  <?  xml    versión  =   " 1.0 [194590011]   ] codificación  =  "  UTF-8  "[19659025]?>
< manifiestos    xmlns [19659027]: [19659027] Android  = [19659022] " http://schemas.android.com/apk/res/android " [19659025]
      paquete  =   " your.package.name " >

      <! -  Agregue su permiso aquí  -> 
    < autorización de EE. UU.    android :  nombre  =   " android.permission.CAMERA "  />
    
    < aplicación 
          Android :  icono  =   " @ mipmap / ic_launcher " 
         Android :  roundIcon  =   " @ mipmap / ic_launcher_round " 
        ...
    
</  manifiesto > 

Puede encontrar la lista completa de autorizaciones en esta documentación.

Más adelante, puede usar una de las dos implementaciones a continuación para agregar correctamente la autorización:

  1. Uso simple de una línea
  2. Usar devolución de llamada Kotlin Lambda

Uso simple de una línea

Esto la implementación utiliza funciones de suspensión para simplificar la solicitud de autorización. Escuchará asincrónicamente la respuesta del cuadro de diálogo de permisos, por lo que no detendrá la interfaz de usuario.

  suspender    diversión    cameraUsage  () {
  se  ( excusa  .couldYouGive ( this ). PermissionFor ( Android .  Manifiesto  permiso  permiso .  CÁMARA ) {
    //  Haz cosas por la cámara 
 }
} 

Y eso es todo. Ya no necesita sobrescribir la implementación de onRequestPermissionsResult () en su negocio, no más variables de alcance de clase para mantener lo que desea para el resultado de la autorización y no más placas para guardar en su código.

Si quieres saber más sobre cómo usar las funciones de hibernación, te recomiendo este video para entenderlo.

Kotlin Lambda Callback Usage

Esta implementación utiliza traback callback lambdas, por lo que será tan natural como una implementación OnClickListener.

  anular [19659005] diversión    onCreate  ( savedInstanceState :    Bundle? ) {
     Súper  .onCreate (savedInstanceState)
    setContentView ( R  .layout.activity_main)

     excusa  .couldYouGive ( esto ). Permiso para (
         Android .  Manifiesto .  permiso .  HABITACIÓN ,
        ) {
         if  (it.granted.contains ( android .  Manifest .  permiso .  CAMERA )) {
              //  Haz cosas por la cámara 
        }
    }
} 

Este método no necesita usar una función de suspensión, pero usa la devolución de llamada.

? Instalación

Paso 1. Agregue el repositorio JitPack al archivo de compilación de su proyecto

  • build.gradle (Proyecto: YourProjectName)
  allprojects  {
 repositorio {
  maven {url   & # 39;  https://jitpack.io  & # 39; }
 }
} 

Paso 2. Agregue la dependencia al archivo de compilación de la aplicación

  • build.gradle (Módulo: aplicación)
  dependencias  {
 Implementación   & # 39;  com.github.AraujoJordan: ExcuseMe: x.x.x  & # 39; 
} 

¡Y eso es todo!

? Extra

ExcuseMe está integrado con funciones simples que ayudan al usuario con problemas de autorización.

Solicitud de permisos múltiples

También puede ejecutar múltiples permisos requeridos en la misma función y sintaxis.

  suspender    diversión    lotOfPermissions  () {
  val  res  =    ExcuseMe  .couldYouGive ( this ). Permitido para ( android .  .  permiso .  CÁMARA   android .  Manifiesto .  permiso .  RECORD_AUDIO]    Android .  póster .  permiso .  WRITE_EXTERNAL_STORAGE )
} 

Verificación de los permisos otorgados

Puede usar este método para verificar uno o más permisos en una llamada de función simple

   //  autorización única 
  val  bool  =    ExcuseMe  .doWeHavePermissionFor ( this [19654585] android .       .  CAMERA )

  //  También puede preguntar si el sistema tiene múltiples permisos (puede haber más de dos) 
  val  bool  =    ExcuseMe  .doWeHavePermissionFor ( esto ,
     Android .  Manifiesto .  permiso .  HABITACIÓN ,
     Android .  Manifiesto .  autorizaciones .  READ_CONTACTS ,
    ...
    ) 

Explique por qué se necesita permiso

Puede explicar por qué necesita dicho permiso. Esto reducirá las posibilidades de negar y aumentar el puntaje de la aplicación Android Vitals. Las aplicaciones con métricas más altas tienen una mayor promoción, lo que aumenta su clasificación en las búsquedas en Google Play Store

Los métodos (suavemente) explicarán por qué la aplicación solicitará la autorización requerida

   ExcuseMe  .couldYouGive ( ). suavemente
          " Solicitud de autorización " ,
          " Para conectarse fácilmente con familiares y amigos, permita que la aplicación acceda a sus contactos " 
    ) .permissionFor ( permiso .  READ_CONTACTS ) 

Esto también se puede usar con una implementación personalizada (sin usar el cuadro de diálogo predeterminado que proporcionamos)

  ExcuseMe . ( esto ). Suavemente {resultado  - > 
          val  diálogo  =    AlertDialog .  Generador  ( esto  @ExampleActivity) 
        dialog.setTitle (  " Solicitar autorizaciones " )
        dialog.setMessage (  " Para escanear su documento más rápido, permita que la aplicación acceda a la cámara " )
        dialog.setNegativeButton (  " Ahora no " ) {_, _  - >  resultado ( falso )}
        dialog.setPositiveButton (  " Continuar " ) {_, _  - >  resultado ( verdadero )}
        dialog.setOnCancelListener {resultado ( falso )}   //  importante 
        Dialog.Show ()
    } .permissionFor ( permiso .  CÁMARA ) 

Resolver cuando el usuario niega la autorización

Puede tener un respaldo cuando el usuario niega una autorización, insistiendo y explicando por qué se requiere la autorización requerida para continuar, pero siempre mostrando un botón "No ahora" para no bloquear completamente al usuario. También puede ser una implementación personalizada, al igual que el método gentle ().

El método please () insistirá y mostrará una explicación correcta cuando el usuario rechace una autorización, preguntándole si desea volver a intentarlo. También puede redirigir al usuario a la configuración de la aplicación, en caso de que el usuario reaccione y ya no muestre la solicitud de autorización.

  ExcuseMe  .couldYouGive ( this ).
    explica AgainTitle  =    " Se necesita autorización " ,
    explica nuevamente Explicación  =    " La aplicación necesita este permiso para enviar el SMS automático " ,
    showSettingsTitle  =    " Establezca la autorización en Configuración " ,
    showSettingsExplanation  =    " La aplicación abrirá la configuración para cambiar la autorización desde allí " 
) .permissionFor ( permiso .  SEND_SMS ) 

Esto también se puede usar con una implementación personalizada (sin usar el cuadro de diálogo predeterminado que proporcionamos)

  ExcuseMe  .couldYouGive ( esto ). {Escriba, resultado  - > 
      cuando  (tipo) {
         DialogType .  EXPLAIN_AGAIN    - >  {  / *  * haz cosas *  * / }
         DialogType .  SHOW_SETTINGS    - >  {  / *  * haz cosas *  * / ]
    }
    result.invoke ( verdadero )   //  continuar 
      //  o 
    result.invoke ( false )   //  continuar 

} .permissionFor ( permiso .  SEND_SMS ) 

? Licencia

  Licencia MIT

Copyright (c) 2020 Jordan L.A. Junior

La autorización se otorga de forma gratuita a cualquier persona que obtenga una copia
de este software y los archivos de documentación asociados (el "Software"), para ser procesados
en el software sin restricciones, incluidos, entre otros, los derechos
para usar, copiar, modificar, fusionar, publicar, distribuir, licenciar y / o vender
copias del software y para permitir a las personas a quienes se refiere el software
previsto para este fin, sujeto a las siguientes condiciones:

El aviso de copyright anterior y esta nota de autorización deben incluirse en todos
copias o partes sustanciales del software.

EL SOFTWARE SE PROPORCIONA "TAL CUAL", SIN GARANTÍA DE NINGÚN TIPO, EXPRESA O
IMPLÍCITO, INCLUYENDO PERO NO LIMITADO A LAS GARANTÍAS DE COMERCIABILIDAD,
APTITUD PARA UN PROPÓSITO EN PARTICULAR Y NO INFRACCIÓN. EN NINGÚN CASO EL
LOS AUTORES O TITULARES DE LOS DERECHOS DE AUTOR SON RESPONSABLES DE CUALQUIER RECLAMACIÓN, DAÑO O DE OTRA MANERA
RESPONSABILIDAD, EN CASO DE CONTRATO, TORTURA O DE OTRA MANERA, DERIVADO DE,
FUERA DE O EN CONEXIÓN CON EL SOFTWARE O USO U OTRAS OFERTAS EN EL
SOFTWARE.

.

Compruebe también

en vivo desde Droidcon, incluida la mayor actualización de Gemini en Android Studio y más lanzamientos del SDK de Android.

Acabamos de lanzar nuestro episodio de otoño de #TheAndroidShow en YouTube etcétera desarrollador.android.comy esta vez …

Deja una respuesta

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