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?
- 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.
- 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
- 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
- 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
- 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:
- Uso simple de una línea
- 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.
.