Jetpack Compose es la biblioteca de IU de Android más reciente que ha tomado la plataforma de desarrollo móvil de Android por sorpresa. Con Jetpack Compose, los desarrolladores pueden construir aplicaciones de alta calidad y sofisticadas que son más fáciles de mantener y escalar. La introducción de Jetpack Compose representa un cambio significativo en la forma en que se crea la interfaz de usuario de una aplicación de Android. En lugar de trabajar con una jerarquía de vistas de Android, Jetpack Compose utiliza un enfoque de programación declarativa para definir la IU de una aplicación. Esto significa que los desarrolladores pueden escribir código que describe cómo debe verse la interfaz de usuario de una aplicación, en lugar de manipular directamente los objetos de vista. Jetpack Compose también viene con una serie de herramientas que facilitan el diseño y la personalización de la interfaz de usuario de una aplicación. Desde una amplia variedad de widgets personalizados hasta la capaci...
Obtener vínculo
Facebook
X
Pinterest
Correo electrónico
Otras apps
Tutorial solicitar permisos en tiempo de ejecución "Run Time" en Android 6.0 Marshmallow
Obtener vínculo
Facebook
X
Pinterest
Correo electrónico
Otras apps
-
[ 02 de Enero de 2017]
Te recomiendo que te leas este post completo para entender cómo funciona la solicitud de permisos en Android +6.0. Luego lee Solicitar permisos en Android en tiempo de ejecución más fácilmente en donde explico una forma re-utilizable para la solicitud de permisos.
Uno de los grandes cambios que viene en Android 6.0 es la manera que las aplicaciones acceden a las características del teléfono, tales como, servicios de telefonía, escribir y leer contactos, datos en la memoria externa entre otros.
Según la documentación, Android separa en dos grupos los permisos: permisos normales y permisos peligrosos.
Los permisos normales, no ponen en riesgo directamente la privacidad del usuario, si tu app posee en su manifiesto permisos normales, el sistema les da acceso automáticamente. Lista de permisos normales
Los permisos peligrosos, pueden dar permiso al app acceso a datos confidenciales del usuario. Si tu app posee en su manifiesto permisos peligrosos, el usuario tiene que aprobar el permiso explícitamente. Grupos de permisos peligrosos
En fin, desde mi punto de vista es útil este cambio pero a la vez tedioso para el usuario y mas aún para el programador puesto que, el hecho de que un usuario le de permiso a tu aplicación una vez, no quiere decir que lo tendrá para siempre, el usuario puede en cualquier momento volver a revocar el permiso de tu app desde la actividad de configuración de la misma. En otras palabras, cada vez que nuestra aplicación necesite un permisos peligroso, nuestro código tiene que verificar si ésta tiene o no el permiso necesario. Acá un ejemplo de los permisos de WhatsApp, yo podría negar el permiso de contactos y la aplicación queda totalmente sin sentido. Hasta el momento WhatsApp no ha implementado completamente este nuevo sistema en Android 6.0, no vi los diálogos de permisos luego de revocar el de contactos.
De acuerdo con google hay maneras de evitar, la solicitud de permisos; un ejemplo sería el uso de la cámara, en vez de crear tu propia lógica para tomar una foto, podemos llamar al intent de la cámara directamente y traernos la foto a nuestra app, +Nick Butcher explica esto en más detalle.
Ok, ahora a lo que vinimos, el código. Voy a demostrar el uso de los permisos en tiempo de ejecución de guardado de datos en el almacenamiento del dispositivo. pasaré por alto la parte de la interfaz gráfica a excepción de un detalle para la implementación del SnackBar.
Podemos solicitar permisos desde el Splash Screen si queremos, si es de vital importancia para que la aplicación funcione correctamente y simplemente no dejar al usuario hacer nada mas, pero este no es será caso, entonces.
Paso 1.
Usamos el método checkSelfPermission("nombre del permiso") para saber si la aplicación tiene o no el permiso, PackageManager tiene las constantes para la validación. Está bastante claro lo que hace, si la verificación es verdadera solicitamos el permiso, sino guardamos el comentario.
private void verifyPermission()
{
//WRITE_EXTERNAL_STORAGE tiene implícito READ_EXTERNAL_STORAGE
//porque pertenecen al mismo grupo de permisos
int writePermission = checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE);
if (writePermission != PackageManager.PERMISSION_GRANTED){
requestPermission();
}
else {
saveComments();
}
}
Paso 2.
Solicitamos el permiso llamando al método requestPermission("lista de permisos", request code), en este punto podemos llamar siempre requestPermission, lo que mostrará el dialogo de solicitud varias veces pero la segunda vez que se muestra el dialogo éste trae un checkbox que dice "No volver a preguntar", si el usuario lo selecciona y niega el permiso, el dialogo no se mostrará nunca más.
Por este motivo google creó shouldShowRequestPermissionRationale() este método devuelve verdadero si ya se mostró el diálogo de permisos, si es así podemos instruir al usuario de por qué necesitamos el permiso o mostrar un mensaje en el SnackBar y asignar una acción.
El SnackBar requiere una vista donde mostrarse, para ello definimos la variable mLayout la cual se asigna en el onCreate y corresponde en este caso al linear layout principal de la actividad.
Procesar la respuesta del usuario, para esto, sobre escribimos el método onRequestPermissionsResult, este recibe el requestCode que asignamos cuando solicitamos el permiso, los permisos solicitados y las respuestas del usuario a las solicitudes de los permisos.
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions,
Jetpack Compose es la biblioteca de IU de Android más reciente que ha tomado la plataforma de desarrollo móvil de Android por sorpresa. Con Jetpack Compose, los desarrolladores pueden construir aplicaciones de alta calidad y sofisticadas que son más fáciles de mantener y escalar. La introducción de Jetpack Compose representa un cambio significativo en la forma en que se crea la interfaz de usuario de una aplicación de Android. En lugar de trabajar con una jerarquía de vistas de Android, Jetpack Compose utiliza un enfoque de programación declarativa para definir la IU de una aplicación. Esto significa que los desarrolladores pueden escribir código que describe cómo debe verse la interfaz de usuario de una aplicación, en lugar de manipular directamente los objetos de vista. Jetpack Compose también viene con una serie de herramientas que facilitan el diseño y la personalización de la interfaz de usuario de una aplicación. Desde una amplia variedad de widgets personalizados hasta la capaci...
Había estado luchando una semana para logra que mi actividad principal tuviera el statusBar transparente, y luego cuando el bottom sheet se expandiera cambiara de color. Probé de todo, poniendo en el tema las banderas de drawSystemBackground, translucentStatusBar, etc., no lograba lo que quería hasta que encontré este reminder de JimRobs en github if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){ // Get Window final Window window = getWindow(); // Set Fullscreen window.getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN ); // Set status bar color // ! Can also be set in style resource (/res/values-v21/styles.xml) // @android:color/transparent window.setStatusBarColor(Color.TRANSPARENT); } Aquí la r eferencia a su reminder , Este código lo agregué en el método onActivityCreated de mi fragmento. Quedando como resultado algo así, solo que no pue...
Feliz año a todos. Hace tiempo que quería compartir con ustedes un forma más sencilla para solicitar permisos en tiempo de ejecución y con menos código o al menos, para no repetir tanto los métodos de solicitud de permisos en todos lados. En este enlace pueden descargar el fragmento que hace la magia. Extiende tu fragment de RequestPermissionFragment, implementa los métodos en tu Fragmento, lo que tienes que hacer en tu Fragmento concreto es solicitar el(los) permiso(s) y luego verificar el permiso que quieras con ActivityCompat.checkSelfPermission, algo así: /** * Request fine location permission */ private void requestFineLocationPermission () { requestPermissions( new String[]{Manifest.permission. ACCESS_FINE_LOCATION , Manifest.permission. ACCESS_COARSE_LOCATION } , REQUEST_CODE_ACCESS_FINE_LOCATION ) ; } /** * Set settings of google map UI */ private void setGoogleMapUISettings () { if (ActivityCompat. checkSelfPermission (getContext() ,...
Comentarios
Publicar un comentario
Prove yourself!