Sistema de permisos en runtime


Esta funcionalidad, de momento, solo es necesaria para Android.

La colección donde se defina este nodo tiene que ser instanciada y tener UI. Es decir, tiene que presentarse en pantalla para que funcione. Lo normal es ponerlo en la colección de Login ó en el entry-point.


A partir de Android 6.X se implementó una opción en los ajustes del dispositivo, para poder gestionar los permisos que les tenemos concedidas a las diferentes aplicaciones


Anteriormente, los permisos de una aplicación se solicitaban al instalar, con el nuevo targetSdkVersion que exige google, al instalar el framework no pide todos los permisos, las aplicaciones están obligadas a solicitar los permisos en runtime, cuando se vayan a necesitar.

Para ello, se han modificado el pushValue y el openEditView, para que antes de lanzarlos, solicite los permisos necesarios al usuario.


Nodo permissions

Los permisos que solicita los determina si existe el nodo <permissions> en la colección.

La colección tiene que ser llamada y tener UI, es decir, no puede ponerse en la colección “Empresas” ó “Usuarios”, lo normal es ponerlo en la colección login-coll ó entry-point, de forma que los permisos estén disponibles para cuando vayamos a utilizarlos en alguna parte de la aplicación, esto no quiere decir que no podamos ir pidiendo los permisos cuando los vayamos necesitando, poniendo el nodo <permissions> en la colección correspondiente y solicitando el permiso que necesitemos en ese momento.

Si el permiso ya estuviera concedido, no aparecerá ningún mensaje solicitando permisos.

Los permisos que solicitemos son obligatorios, es decir, si el usuario no acepta los permisos, no podrá entrar en la colección donde hayamos solicitado los permisos.



Sintaxis del nodo <permissions>:

<permissions> 
 
	<!-- Acceso a la SDCard/almacenamiento externo. Necesario para la réplica y en general el funcionamiento del framework -->
	<permission name="external-storage" /> 
 
	<!-- Acceso al hardware de telefonía, para hacer llamadas y poder obtener IMEI y otros identificadores de dispositivo. -->
	<permission name="phone" /> 
 
	<!-- Acceso a la cámara. Necesario para multitud de plugins. -->
	<permission name="camera" />
 
	<!-- Acceso al GPS y la localización por wifi. Este permiso se mantiene activo aún cuando la aplicación no esté abierta o en uso.-->
	<permission name="location" />
 
	<!-- Acceso al calendario del usuario para leer/añadir eventos. -->
	<permission name="calendar" />
 
	<!-- Leer los contactos. -->
	<permission name="contacts" />
 
	<!-- Acceso al micrófono. -->
	<permission name="microphone" />
 
	<!-- Lectura y envío de SMS. -->
	<!-- CUIDADO, GOOGLE NO permite el uso de este permiso a los frameworks que estén en Google Play, salvo causa justificada y obteniendo los permisos pertinentes -->
	<permission name="sms" /> 
       <!--para coger las coordenadas en primer plano -->
       <permission name="location-foreground" />
 
</permissions>


Los frameworks que estén alojados en el Google Play NO pueden utilizar el permiso de SMS, salvo causa justificada y obteniendo los permisos necesarios por parte de Google.