¡Te damos la bienvenida a la Vista previa para desarrolladores de Android 13! Envíanos tus comentarios y ayúdanos a hacer de Android 13 la mejor versión hasta el momento.

Cambios en el comportamiento: apps orientadas a Android 13 o versiones posteriores

Al igual que las versiones anteriores, Android 13 incluye cambios de comportamiento que podrían afectar tu app. Los siguientes cambios se aplican exclusivamente a las apps orientadas a Android 13 o versiones posteriores. Si tu app está orientada a Android 13 o versiones posteriores, debes modificarla para que admita estos comportamientos correctamente, cuando corresponda.

Asegúrate de revisar también la lista de cambios en el comportamiento que afectan a todas las apps que se ejecutan en Android 13.

Privacidad

El permiso de notificación afecta la apariencia del servicio en primer plano

Si el usuario rechaza este permiso, aún podrá ver los avisos relacionados con estos servicios en primer plano en el Administrador de tareas de servicios en primer plano (FGS), pero no las verá en el panel lateral de notificaciones.

Nuevo permiso de tiempo de ejecución para dispositivos de Wi-Fi cercanos

En versiones anteriores de Android, el usuario debe otorgarle el permiso ACCESS_FINE_LOCATION a tu app para que complete varios casos de uso frecuentes de Wi-Fi que se relacionan con los hotspots, las conexiones Wi-Fi directas, Wi-Fi RTT y mucho más.

Como es difícil para los usuarios asociar permisos de ubicación con la funcionalidad de Wi-Fi, Android 13 introduce un nuevo permiso de tiempo de ejecución en el grupo de permisos NEARBY_DEVICES para apps que administran las conexiones de un dispositivo a puntos de acceso cercanos a través de Wi-Fi. Este permiso, NEARBY_WIFI_DEVICES, completa estos casos de uso de Wi-Fi.

Siempre que tu app no obtenga información de la ubicación física de las API de Wi-Fi, solicita NEARBY_WIFI_DEVICES en lugar de ACCESS_FINE_LOCATION cuando orientes tu app a Android 13 o versiones posteriores y uses API de Wi-Fi. Este proceso es similar al que realizas en Android 12 (nivel de API 31) y versiones posteriores, cuando declaras que la información del dispositivo Bluetooth nunca se usa para la ubicación.

Obtén más información sobre el permiso para dispositivos de Wi-Fi cercanos.

El uso de sensores corporales en segundo plano requiere un permiso nuevo

Android 13 introduce el concepto de acceso "durante el uso" para los sensores corporales, como el ritmo cardíaco, la temperatura y el porcentaje de oxígeno en sangre. Este modelo de acceso es muy similar al que introdujo el sistema para la ubicación en Android 10 (nivel de API 29).

Si tu app se orienta a Android 13 y requiere acceso a la información del sensor corporal mientras se ejecuta en segundo plano, debes declarar el nuevo permiso BODY_SENSORS_BACKGROUND además del permiso existente BODY_SENSORS.

Seguridad

Los filtros de intents bloquean los intents que no coinciden

Cuando tu app envía un intent a un componente exportado de otra app orientada a Android 13 o versiones posteriores, se entrega ese intent solo si coincide con un elemento <intent-filter> en la app receptora. En otras palabras, el sistema bloquea todos los intents que no coinciden, excepto los siguientes:

  • Intents enviados a los componentes de otras apps en los que esos componentes no declaran ningún filtro de intents
  • Intents enviados a otros componentes de tu app
  • Intents enviados desde el sistema
  • Intents enviados desde un usuario con privilegios a nivel de raíz

Exportación más segura de receptores registrados en el contexto

Para que los receptores de tiempo de ejecución sean más seguros, Android 13 te permite especificar si un receptor de emisión específico de tu app se debe exportar a otras apps y ser visible para ellas en el dispositivo. Si se exporta el receptor de emisión, otras apps podrían enviar transmisiones sin protección a tu app. Esta configuración de exportación, que está disponible en apps orientadas a Android 13 o versiones posteriores, puede ayudar a evitar una de las principales fuentes de vulnerabilidades de las apps.

En versiones anteriores de Android, cualquier app del dispositivo podía enviar una transmisión sin protección a un receptor registrado dinámicamente, a menos que ese receptor estuviera protegido por un permiso de firma.

Para implementar esta medida de mejora de la seguridad, haz lo siguiente:

  1. Habilita el cambio de marco de compatibilidad de DYNAMIC_RECEIVER_EXPLICIT_EXPORT_REQUIRED.
  2. En cada uno de los receptores de emisión de tu app, indica de forma explícita si otras apps deben poder enviarle transmisiones, como se muestra en el siguiente fragmento de código:

    Kotlin

    // This broadcast receiver should be able to receive broadcasts from other apps.
    // This option causes the same behavior as setting the broadcast receiver's
    // "exported" attribute to true in your app's manifest.
    context.registerReceiver(sharedBroadcastReceiver, intentFilter,
        RECEIVER_EXPORTED)
    
    // For app safety reasons, this private broadcast receiver should **NOT**
    // be able to receive broadcasts from other apps.
    context.registerReceiver(privateBroadcastReceiver, intentFilter,
        RECEIVER_NOT_EXPORTED)

    Java

    // This broadcast receiver should be able to receive broadcasts from other apps.
    // This option causes the same behavior as setting the broadcast receiver's
    // "exported" attribute to true in your app's manifest.
    context.registerReceiver(sharedBroadcastReceiver, intentFilter,
        RECEIVER_EXPORTED);
    
    // For app safety reasons, this private broadcast receiver should **NOT**
    // be able to receive broadcasts from other apps.
    context.registerReceiver(privateBroadcastReceiver, intentFilter,
        RECEIVER_NOT_EXPORTED);

Rendimiento y batería

Uso de recursos de batería

Si el usuario coloca la app en estado "restringido" para el uso de batería en segundo plano mientras tu app se orienta a Android 13, el sistema aplica varias limitaciones relacionadas con las transmisiones.

Obtén más información sobre las limitaciones nuevas para el uso restringido de batería en segundo plano en la página que describe las funciones de uso de recursos de batería que se introducen en Android 13.