Getnet DocsGetnet Docs

Configuración de permisos en Android

El SDK de Get Mini Android requiere permisos específicos de Android para comunicarse con los dispositivos PIN pad Bluetooth y conectarse a los servicios web de Redsys. Esta guía explica qué permisos son necesarios y cómo declararlos en el manifiesto de tu aplicación.

Permisos requeridos

El SDK Android requiere los siguientes permisos para funcionar correctamente:

Permisos de Bluetooth

Para gestionar y establecer conexiones Bluetooth con el PIN pad de Get Mini:

  • android.permission.BLUETOOTH
  • android.permission.BLUETOOTH_ADMIN

Permisos de red

Para enviar solicitudes de autorización a los servicios web de Redsys:

  • android.permission.INTERNET
  • android.permission.ACCESS_NETWORK_STATE

Declarar permisos en AndroidManifest.xml

Añade los siguientes permisos a tu archivo AndroidManifest.xml dentro de la etiqueta <manifest>:

<manifest xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- Permisos de Bluetooth para comunicación con el PIN pad -->
    <uses-permission android:name="android.permission.BLUETOOTH" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />

    <!-- Permisos de red para los servicios web -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    <application ...>
        <!-- Configuración de tu aplicación -->
    </application>
</manifest>

Estos son los permisos mínimos requeridos según lo especificado en la documentación del SDK iTPV-PC. Sin estos permisos, el SDK no podrá:

  • Descubrir y conectarse a dispositivos PIN pad Bluetooth
  • Transmitir datos de transacciones a los servicios web de Redsys
  • Recibir respuestas de autorización

Comportamiento de permisos por versión de Android

Android 5.1 y anteriores (API 22 y anteriores)

Todos los permisos se otorgan automáticamente en el momento de la instalación. No se requieren solicitudes de permisos en tiempo de ejecución.

Android 6.0 y posteriores (API 23+)

Los permisos peligrosos deben solicitarse en tiempo de ejecución. Para el SDK iTPV-PC:

  • Permisos de Bluetooth (BLUETOOTH, BLUETOOTH_ADMIN) se consideran permisos normales y se otorgan automáticamente.
  • Permisos de red (INTERNET, ACCESS_NETWORK_STATE) también son permisos normales y se otorgan automáticamente.

Como resultado, no se requieren solicitudes de permisos en tiempo de ejecución para la funcionalidad principal del SDK iTPV-PC en cualquier versión de Android, ya que todos los permisos requeridos están clasificados como permisos normales por la plataforma Android.


Consideraciones adicionales para versiones modernas de Android

Android 12+ (API 31+)

Si tu aplicación tiene como objetivo Android 12 o superior, puede encontrar nuevos requisitos de permisos de Bluetooth introducidos por la plataforma:

  • BLUETOOTH_SCAN: Requerido para descubrir dispositivos Bluetooth cercanos.
  • BLUETOOTH_CONNECT: Requerido para conectarse a dispositivos Bluetooth vinculados.

Aunque la documentación del SDK iTPV-PC (versión 2.5.3) no requiere explícitamente estos permisos, los dispositivos Android 12+ pueden exigirlos dependiendo de su versión de SDK objetivo y los detalles de implementación.

Si encuentras problemas de conectividad Bluetooth en dispositivos Android 12+, considera añadir estos permisos a tu manifiesto:

<!-- Opcional: Permisos de Bluetooth para Android 12+ -->
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />

Y solicítalos en tiempo de ejecución antes de inicializar la conexión con el PIN pad:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
    val permissions = arrayOf(
        Manifest.permission.BLUETOOTH_SCAN,
        Manifest.permission.BLUETOOTH_CONNECT
    )
    requestPermissions(permissions, BLUETOOTH_PERMISSION_REQUEST_CODE)
}

Permiso de ubicación (Android 6.0 - 11)

En las versiones de Android 6.0 a 11, el escaneo de Bluetooth LE puede requerir el permiso de ubicación (ACCESS_FINE_LOCATION) aunque el SDK no utilice la funcionalidad GPS. Este es un requisito de la plataforma, no un requisito del SDK.

Si encuentras problemas de escaneo Bluetooth en dispositivos Android 6.0-11, es posible que debas añadir:

<!-- Opcional: Requerido para escaneo Bluetooth LE en Android 6-11 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"
    android:maxSdkVersion="30" />

Y solicítalo en tiempo de ejecución en las versiones de Android afectadas.


Solución de problemas

Fallo en la conexión Bluetooth

  • Verifica que los cuatro permisos requeridos estén declarados en el AndroidManifest.xml.
  • Asegúrate de que el Bluetooth esté activado en el dispositivo Android.
  • Confirma que el PIN pad esté encendido y en modo de emparejamiento.
  • Comprueba que el número de serie del PIN pad coincida con la configuración.

Fallo en la autorización de red

  • Verifica que el permiso INTERNET esté declarado.
  • Comprueba la conectividad de red en el dispositivo.
  • Confirma que el entorno configurado sea el correcto (integración, certificación o producción).
  • Verifica que las credenciales del terminal sean válidas.

Problemas específicos de Android 12+

  • Añade los permisos BLUETOOTH_SCAN y BLUETOOTH_CONNECT.
  • Solicita estos permisos en tiempo de ejecución antes de la inicialización del PIN pad.
  • Asegúrate de que los usuarios otorguen el permiso de “Dispositivos cercanos” cuando se les solicite.

Próximos pasos