|
|
|
|
- Presentación
- Recordatorio: nivel de API al que se orienta la app ("TargetSdkVersion")
- Aplicaciones que solicitan permisos de ubicación en segundo plano
- Aplicaciones que requieren acceso a archivos
Android 11: Cambios en el comportamiento de las aplicaciones
Después de cada nueva versión de Android, Google requiere que se aumente el nivel de API "TargetSdkVersion" para publicar aplicaciones en Google Play. Las aplicaciones tendrán los siguientes cambios: - Geolocalización: No se pueden combinar los permisos ACCESS_FINE_LOCATION y ACCESS_BACKGROUND_LOCATION en una sola operación. Esto implica un cambio en el código de las aplicaciones que utilizan la ubicación en segundo plano.
- Acceso a los archivos: las aplicaciones de Android 11 ya no pueden acceder a los archivos creados por otra aplicación utilizando las rutas de archivos. Esto implica una verificación de los procesos de manejo de archivos y cambios en el código, si es necesario.
- Limitaciones de acceso a las direcciones Mac: La función NetMACAddress ya no está disponible. Siempre devuelve una cadena vacía.
Recordatorio: nivel de API al que se orienta la app ("TargetSdkVersion") Cuando se compila una aplicación para Android, el APK generado incluye un nivel de API "TargetSdkVersion" del SDK de Android. Con este nivel de API, Android determina las funcionalidades que se pueden incluir en la aplicación, y las reglas de seguridad que se deben aplicar a la misma. El nivel de API de una aplicación ("TargetSdkVersion") puede verse en el asistente de generación del APK, en la etapa "Configuración": - Haga clic en "Configuración avanzada",
- En la ventana "Configuración avanzada", seleccione "Editar manifiesto",
- Despliegue el nodo "uses-sdk",
- la línea "android:targetSdkVersion" muestra el nivel de API.
Aplicaciones que solicitan permisos de ubicación en segundo plano A partir de WINDEV Mobile 26 Update 3, solo se integrarán los permisos de ubicación (ACCESS_FINE_LOCATION o ACCESS_COARSE_LOCATION) al generar la aplicación, si es necesario. Para las aplicaciones que requieren acceso a la ubicación en segundo plano, es necesario: - Agregar manualmente el permiso "ACCESS_BACKGROUND_LOCATION" en el asistente de generación de la aplicación Android.
- Solicitar explícitamente el permiso de ubicación en segundo plano con la función PermissionRequest. Por ejemplo:
PermissionRequest(permBackgroundLocation, Callback) INTERNAL PROCEDURE Callback(p is Permission) IF p.Granted THEN // Functions that require background location access can be used END END
Observaciones: - Siga las directrices de Google para las aplicaciones que requieren acceso a la ubicación en segundo plano. Para obtener más información, consulte https://support.google.com/googleplay/android-developer/answer/9799150. Si no se cumplen estas condiciones (especialmente los requisitos de información del usuario), es posible que no se acepte la publicación de las aplicaciones en Google Play.
- El permiso de ubicación en segundo plano solo debe solicitarse si se ha concedido el permiso de ubicación. De lo contrario, la función PermissionRequest fallará.
- Si la opción elegida por el usuario para la solicitud de acceso a la ubicación en segundo plano es más restrictiva que la opción elegida para la primera solicitud de acceso a la ubicación, la aplicación se reiniciará automáticamente.
- En dispositivos con Android 10 o anterior, si se ha concedido el permiso de ubicación a la aplicación, el permiso de ubicación en segundo plano se concederá sin mostrar una ventana.
- Las funciones WLanguage correspondientes son las siguientes:
| | BeaconDetectBackground | Notifica a la aplicación cuando el dispositivo entra o sale del rango de transmisión de un conjunto de balizas. | BeaconDetectPrecise | Permite buscar balizas cerca del dispositivo. | BTLEListDevice | Devuelve la lista de dispositivos Bluetooth Low Energy. | BTListDevice | Devuelve la lista de dispositivos Bluetooth accesibles. | geoTrackingEnable | Permite seguir la ubicación en una aplicación WINDEV Mobile. | GPSDetectPosition | Pide ser notificado cuando el dispositivo se acerca a una ubicación determinada. | GPSFollowMovement | Solicita que se le notifique periódicamente la ubicación actual del dispositivo. | GPSGetPosition | Recupera información sobre la posición actual del dispositivo. | GPSInfo | Devuelve información sobre el proveedor de ubicación utilizado por la aplicación para las funciones de geolocalización. | GPSInitParameter | Inicializa los parámetros de las funciones de geolocalización de WLanguage y busca un proveedor de ubicación. | GPSLastPosition | Recupera la información sobre la última posición conocida del dispositivo. | GPSStatus | Recupera el estado de activación del proveedor de geolocalización o pide ser notificado cuando cambia el estado. | GPSStopDetection | Detiene la detección de la ubicación activada por GPSDetectPosition. | MapFollowMovement | Muestra la ubicación actual del dispositivo en una control Mapa y actualiza la ubicación a medida que se mueve. | MobileNetworkConnectionInfo | Devuelve información sobre la conexión actual a los datos a través de la red móvil. | WiFiDetectAccessPoint | Inicia la detección de los puntos de acceso Wi-Fi a los que se puede acceder desde el dispositivo. |
Aplicaciones que requieren acceso a archivos Hasta Android 10, las aplicaciones pueden leer y escribir archivos: - en los directorios de la aplicación en el almacenamiento interno (fCurrentDir, fExeDir, fDataDir)
- casi en cualquier lugar del almacenamiento externo :
- estructura jerárquica personalizada a partir de la raíz del almacenamiento externo devuelto por la función SysDirStorageCard
- en los directorios de la aplicación en el almacenamiento externo: función SysDirExternalStorage con las constantes sseAppXXX.
- en directorios públicos: Documents, Download, Images, etc. en el almacenamiento externo: función SysDirExternalStorage con las constantes ssePublicXXX.Las aplicaciones Android pueden acceder a los archivos creados por otras aplicaciones en el almacenamiento externo sin restricciones.
Cuando la aplicación se utiliza en un dispositivo que ejecuta Android 11, aparecen nuevas restricciones: - las aplicaciones ya no pueden leer o escribir archivos en el almacenamiento externo fuera de:
- directorios públicos como "Documentos", "Descargas", "Imágenes", etc..: utilizar SysDirExternalStorage con las constantes ssePublicXXX.
- directorios específicos de la aplicación: utilizar SysDirExternalStorage con las constantes sseAppXXX.
- en los directorios públicos, una aplicación sólo puede acceder (en modo de lectura o escritura) a los archivos que ha creado.
Observación: si la aplicación se desinstala y se vuelve a instalar, ya no tendrá acceso a los archivos creados por la versión previamente instalada en los directorios públicos del almacenamiento externo.
Esto significa que las aplicaciones ya no pueden acceder a los archivos creados por otra aplicación utilizando su ruta. El usuario final debe seleccionar los archivos a los que la aplicación puede acceder. Es posible mostrar un selector de archivos utilizando la función URISelect y luego manipular el archivo por el URI devuelto por la función. Asimismo, SysDirStorageCard y la constante ssePublic de la función SysDirExternalStorage (directorio raíz de almacenamiento externo) no deben utilizarse en los nuevos proyectos de desarrollo. Sin embargo, existe un permiso especial para override estas restricciones: GESTIONAR_ALMACENAMIENTO_EXTERNO. Para activarlo, debe: - Añade manualmente el MANAGE_EXTERNAL_STORAGE Permission en la generación de la aplicación Android asistente.
- Solicitar explícitamente el acceso al almacenamiento externo mediante PermissionRequest. Por ejemplo:
PermissionRequest(permManageExternalStorage, Callback) INTERNAL PROCEDURE Callback(p is Permission) IF p.Granted THEN // Functions that require external storage access can be used END END
Esta solicitud de Permission no abre la ventana emergente estándar de Permission, sino que abrirá una ventana del sistema para permitir que la aplicación acceda a todos los archivos del almacenamiento externo sin restricciones. Atención: si la aplicación se va a publicar en Google Play, se debe justificar el uso de esta Permission. Sólo se permiten aplicaciones de gestión de archivos, antivirus o gestores de copias de seguridad. En otros casos, si se utiliza esta Permission, es muy probable que se rechace la publicación.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|