Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Desarrollo en Delphi para Android
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy


Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-09-2019
dani36652 dani36652 is offline
Miembro
 
Registrado: abr 2019
Posts: 55
Poder: 6
dani36652 Va camino a la fama
Thumbs up Solicitar Permisos Al Usuario En Tiempo De Ejecución

Hola a todos en ésta gran comunidad de programación en éste gran y poderoso lenguaje que es Delphi...
Hoy vengo haciendo éste hilo con la finalidad de proporcionar información sobre cómo solicitar permisos al usuario en tiempos de ejecución.
Cómo sabrán ésto aplica solamente para dispositivos móviles con Sistema Operativo Android 5.0 y superiores....

Bueno, para no hacerla tan tardada se debe hacer lo siguiente:
-Se deben asignar los permisos que la aplicación vaya a utilizar solamente en las configuraciones del proyecto.
-En la parte de implementation, en Uses les sugiero agregar las siguientes unidades:

EJEMPLO DE CÓDIGO:
// HACER USO DE LOS PERMISOS
Implementation
Uses
System.Permissions, System.IOUtils,
{$IFDEF ANDROID}
Androidapi.JNI.Os,
Androidapi.JNI.JavaTypes,
Androidapi.Helpers,
{$ENDIF}
FMX.DialogService;
{$R *.fmx}


-Una vez hecho lo anterior, ya es de manera personal y opcional en qué parte de su aplicación final se le pedirá al usuario aceptar los permisos que correspondan, en mi caso, es un editor de código HTML, entonces cuando el usuario selecciona la opción "guardar como", se le pide el permiso para escribir en el almacenamiento. El cual se expresa en código de ésta manera:

//============================= PERMISO PARA ESCRIBIR EN EL ALMACENAMIENTO EXTERNO...
{$IFDEF ANDROID}
PermissionsService.RequestPermissions([JStringToString(TJManifest_permission.JavaClass.WRITE_EXTERNAL_STORAGE)],
//==================== CÓDIGO PARA QUE LA APLICACION ACTÚE SEGUN EL USUARIO HAYA CONCEDIDO EL PERMISO==========================
procedure(const APermissions: TArray<string>; const AGrantResults: TArray<TPermissionStatus>)
begin

if (Length(AGrantResults) = 1) and (AGrantResults[0] = TPermissionStatus.Granted) then
begin
TDialogService.ShowMessage('¡Los permisos al almacenamiento han sido concedidos por el usuario!'); //PARTE DONDE SE CONCEDE EL PERMISO
end else //FIN DE LA CONDICIONANTE...
begin
TDialogService.ShowMessage('¡Los permisos al almacenamiento han sido negados por el usuario!');// PARTE DONDE NO SE CONCEDE EL PERMISO
end;
{$ENDIF}
end)

NOTA: De igual manera les comparto un ejemplo para saber si algún permiso ha sido concedido por el usuario y que de lo contrario se le requiera al usuario o que se haga otra cosa en la aplicación...
EJEMPLO DE CÓDIGO:

//CÓDIGO PARA SABER SI UN PERMISO FUE OTORGADO POR EL USUARIO...

if PermissionsService.IsPermissionGranted(JStringToString(TJManifest_permission.JavaClass.WRITE_EXTERNA L_STORAGE)) =true then
//==================================================================================================== ===========0
begin
//SI EL PERMISO SE CONCEDIÓ PASA A LA PARTE VERDADERA

Showmessage('El permiso ya fue concedido con anterioridad');
end else
begin
// SI EL PERMISO NO FUE OTORGADO, PASA A LA PARTE FALSA DONDE SE PIDE AL USUARIO CONCEDERLO...

//============================= PERMISO PARA ESCRIBIR EN EL ALMACENAMIENTO EXTERNO...
{$IFDEF ANDROID}
PermissionsService.RequestPermissions([JStringToString(TJManifest_permission.JavaClass.WRITE_EXTERNAL_STORAGE)],
//==================== CÓDIGO PARA QUE EL PROGRAMA ACTÚE SEGUN EL USUARIO HAYA CONCEDIDO EL PERMISO==========================
procedure(const APermissions: TArray<string>; const AGrantResults: TArray<TPermissionStatus>)
begin

if (Length(AGrantResults) = 1) and (AGrantResults[0] = TPermissionStatus.Granted) then
begin
showmessage('Permiso concedido');

end else //FIN DE LA CONDICIONANTE...
begin
TDialogService.ShowMessage('¡Los permisos al almacenamiento han sido negados por el usuario!');
end;
{$ENDIF}
end)



Recordatorio:
*TJManifest_permission.JavaClass.WRITE_EXTERNAL_STORAGE>>>>> PERMISO DE ESCRITURA EN EL ALMACENAMIENTO
*TJManifest_permission.JavaClass.CAMERA>>>>>>>PERMISO PARA ACCEDER A LA CÁMARA
*TJManifest_permission.JavaClass.RECEIVE_SMS>>>> ACCESO A RECIBIR SMS

SI TIENEN LAS SUGERENCIAS DE CÓDIGO ACTIVADAS, LES APARECERÁN LOS PERMISOS QUE VAYA A UTILIZAR SU APLICACIÓN.... ÉXITO EN TODOS SUS PROYECTOS ACTUALES Y FUTUROS, ESPERO Y LA INFORMACIÓN ANTERIOR LES SEA DE AYUDA...
Responder Con Cita
  #2  
Antiguo 26-09-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Recuerda usar los tags para código, gracias.



Y no olvides leer nuestra guía de estilo.
Responder Con Cita
  #3  
Antiguo 26-09-2019
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Gracias por el aporte.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo 14-01-2020
cocute cocute is offline
Miembro
 
Registrado: nov 2008
Posts: 403
Poder: 16
cocute Va por buen camino
sigo sin terminar de entender como en las nuevas versiones de Delphi no han metido todo esto de los permisos automático
Responder Con Cita
  #5  
Antiguo 16-01-2020
cocute cocute is offline
Miembro
 
Registrado: nov 2008
Posts: 403
Poder: 16
cocute Va por buen camino
yo sigo usando Delphi 10.2 que no hace falta esto de los permisos aun compilando para la última versión de Delphi, aunque no se si me aceptarían mis apk en la market,
si compilo mis aplicaciones con Delphi 10.3 y tengo que añadir el tema de los permisos cuando hace la comprobación al inicio del programa hace una demora que me afea el programa,
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Solicitar permisos en Android 6 ElGatitoTapatio FireMonkey 2 19-01-2017 19:06:12
validacion de usuarios y permisos para cada usuario? lince_36 JAVA 7 27-07-2010 18:11:14
Como saber si el usuario logueado tiene permisos administrativos JoAnCa Varios 3 11-11-2008 21:15:42
Permisos del "usuario seguro" para Firebird Server rolandoj Firebird e Interbase 0 25-09-2008 14:10:18
Que el usuario dibuje en tiempo de ejecución Cannabis Gráficos 4 17-07-2008 21:23:48


La franja horaria es GMT +2. Ahora son las 09:53:45.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi