Permisos de aplicación
Muchas funciones de los dispositivos y sistemas operativos actuales pueden tener importantes implicaciones para la privacidad, la seguridad y el rendimiento si se utilizan indebidamente. Por ello, cada vez es más habitual que las plataformas exijan el consentimiento explícito del usuario antes de acceder a estas funciones.
Las API de permisos de Qt permiten a la aplicación comprobar o solicitar permisos para dichas funciones de forma multiplataforma.
Uso
Una función que suele requerir el consentimiento del usuario es el acceso al micrófono del dispositivo. Una aplicación para grabar notas de voz quizás tendría inicialmente este aspecto:
void VoiceMemoWidget::onRecordingInitiated() { m_microphone->startRecording(); }
Para asegurarnos de que esta aplicación funciona bien en plataformas que requieren el consentimiento del usuario para acceder al micrófono, la extenderíamos así:
void VoiceMemoWidget::onRecordingInitiated() { QMicrophonePermission microphonePermission; switch (qApp->checkPermission(microphonePermission)) { case Qt::PermissionStatus::Undetermined: qApp->requestPermission(microphonePermission, this, &VoiceMemoWidget::onRecordingInitiated); return; case Qt::PermissionStatus::Denied: m_permissionInstructionsDialog->show(); return; case Qt::PermissionStatus::Granted: m_microphone->startRecording(); } }
Primero comprobamos si ya conocemos el estado del permiso del micrófono. Si no, iniciamos una petición de permiso para determinar el estado actual, que potencialmente pedirá el consentimiento del usuario. Conectamos el resultado de la petición a la ranura en la que ya estamos, para tener otra oportunidad de evaluar el estado del permiso.
Una vez que se conoce el estado del permiso, ya sea porque se nos ha concedido o denegado el permiso en un momento anterior, o después de obtener el resultado de la solicitud que acabamos de iniciar, redirigimos al usuario a un cuadro de diálogo explicando por qué no podemos grabar notas de voz en este momento (si el permiso fue denegado), o proceder a utilizar el micrófono (si el permiso fue concedido).
Nota: En macOS e iOS actualmente sólo se pueden solicitar permisos para aplicaciones GUI.
Declaración de permisos
Algunas plataformas requieren que los permisos solicitados se declaren por adelantado en el momento de la compilación.
Plataformas Apple
Cada permiso que solicite debe ir acompañado de la llamada cadena de descripción de uso en el archivo Info.plist que describa por qué la aplicación necesita acceder al permiso solicitado. Por ejemplo:
<key>NSMicrophoneUsageDescription</key> <string>The microphone is used to record voice memos.</string>
Las claves de descripción de uso pertinentes se describen en la documentación de cada tipo de permiso.
Para asegurarse de que el backend de permisos relevante se incluye con su aplicación, indique al sistema de compilación su Info.plist personalizado.
Android
Cada permiso que solicite debe ir acompañado de una entrada uses-permission en el archivo AndroidManifest.xml de la aplicación. Por ejemplo
<manifest ...>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
</manifest>Para asegurarte de que el backend de permisos relevante se incluye con tu aplicación, indica al sistema de compilación tu AndroidManifest.xml personalizado o utiliza qt_add_android_permission().
Los nombres de los permisos correspondientes se describen en la documentación de cada tipo de permiso.
Nota: Cuando se utiliza esta API, la etiqueta <!-- %%INSERT_PERMISSIONS --> debe estar presente en el AndroidManifest.xml. Para más información sobre el uso de esta etiqueta, véase Qt Permissions and Features
Permisos disponibles
Están disponibles los siguientes tipos de permisos:
Acceso a los periféricos Bluetooth | |
Acceder a la agenda del usuario | |
Acceder a la cámara para hacer fotos o vídeos | |
Acceder a los contactos del usuario | |
Acceder a la localización del usuario | |
Acceder al micrófono para monitorizar o grabar sonido |
Nota: Los tipos de permisos disponibles cubren la funcionalidad básica de módulos Qt como Qt Multimedia y Qt Positioning, pero no abarcan todos los permisos específicos de la plataforma. Actualmente no se admiten tipos de permisos personalizados.
Buenas prácticas
Para garantizar la mejor experiencia posible para el usuario final, recomendamos adoptar las siguientes prácticas recomendadas para gestionar los permisos de las aplicaciones:
- Solicite el conjunto mínimo de permisos necesarios. Por ejemplo, si sólo necesita acceso al micrófono, no solicite permiso para la cámara por si acaso. Utilice las propiedades de los tipos de permisos individuales para limitar aún más el alcance del permiso, por ejemplo QContactsPermission::setAccessMode() para solicitar acceso de sólo lectura.
- Solicita permisos en respuesta a acciones específicas del usuario. Por ejemplo, aplaza la solicitud de permiso para el micrófono hasta que el usuario pulse el botón para grabar audio. Asociar la solicitud de permiso a una acción específica proporciona al usuario un contexto más claro de por qué necesita el permiso. No solicite todos los permisos necesarios al inicio.
- Presente contexto y explicaciones adicionales si es necesario. A veces la acción del usuario no es suficiente contexto. Considere la posibilidad de presentar un diálogo explicativo después de que el usuario haya iniciado la acción, pero antes de solicitar el permiso, para que el usuario sea consciente de lo que está a punto de ocurrir cuando aparezca el diálogo de permisos del sistema.
- Sea transparente y explícito sobre por qué se necesitan los permisos. En los cuadros de diálogo de explicación y en las descripciones de uso, sea transparente sobre por qué se necesita un permiso concreto para que su aplicación proporcione una función específica, de modo que los usuarios puedan tomar decisiones con conocimiento de causa.
- Tenga en cuenta los permisos denegados. Los permisos que solicite pueden ser denegados por diversos motivos. Siempre debes tener en cuenta esta situación, degradando con elegancia la experiencia de tu aplicación, y presentando explicaciones claras al usuario sobre la situación.
- Nunca solicites permisos a una biblioteca. La solicitud de permisos debe hacerse lo más cerca posible del usuario, donde esté disponible la información necesaria para tomar buenas decisiones sobre los puntos anteriores. Las bibliotecas pueden comprobar los permisos, para asegurarse de que tienen los requisitos previos para realizar su trabajo, pero si el permiso es indeterminado o denegado esto debe reflejarse a través de la API de la biblioteca, para que la aplicación a su vez pueda solicitar los permisos necesarios.
Véase también Archivos de lista de propiedades de información y Qt Creator: Edición de archivos de manifiesto.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.