ALWAYS_SANDBOX_DISPLAY_APIS
ID del cambio: 185004937
Estado predeterminado: Inhabilitado para todas las apps.
Cuando se habilita, aplica la zona de pruebas de la API de Display a un paquete independientemente del modo de renderización en ventanas. Las APIs de Display siempre proporcionarán los límites de la app.
Para obtener más información sobre este cambio, consulta la sección sobre
métodos de Display obsoletos en la página de cambios de comportamiento de Android 12.
|
AUTOFILL_NON_TEXT_REQUIRES_ON_RECEIVE_CONTENT_LISTENER
ID del cambio: 163400105
Estado predeterminado: Habilitado para apps que se orientan a Android 12 (nivel de API 32) o versiones posteriores.
A partir de Android 12, la plataforma puede proporcionar sugerencias que no sean de texto (como imágenes) mediante Autofill Framework aumentado (consulta Servicios de autocompletado). Para que una app pueda controlar estas sugerencias, generalmente, debe implementar la API de OnReceiveContentListener .
A fin de mejorar la adopción de esta API para las apps que ya implementaron la API de InputConnection.commitContent(InputContentInfo, int, Bundle) , la reutilizamos como resguardo si la app aún no implementó OnReceiveContentListener . Este resguardo solo está habilitado en Android 12 (nivel de API 31). Este ID de cambio inhabilita el resguardo, de modo que las apps orientadas a Android 12 (nivel de API 32) y versiones posteriores deben implementar la API de OnReceiveContentListener para aceptar sugerencias que no sean de texto.
|
BLOCK_FLAG_SLIPPERY
ID del cambio: 157929241
Estado predeterminado: Habilitado para todas las apps.
En el caso de las apps que se ejecutan en Android 12 (nivel de API 31), comprueba si se usa FLAG_SLIPPERY con cualquier ventana de la app. Esperamos que solo los componentes del sistema usen esta marca, ya que se trata de un campo no admitido. Si se utiliza, se restringirá.
|
BLOCK_GPS_STATUS_USAGE
ID del cambio: 144027538
Estado predeterminado: Habilitado para apps que se orientan a Android 12 (nivel de API 31) o versiones posteriores.
Para las apps orientadas a Android 12 (nivel de API 31) y versiones posteriores, todo el uso de la API de GpsStatus debe reemplazarse por las API de GnssStatus .
|
BLOCK_IMMUTABLE_PENDING_INTENTS
ID del cambio: 171317480
Estado predeterminado: Habilitado para apps que se orientan a Android 12 (nivel de API 31) o versiones posteriores.
En el caso de las apps orientadas a Android 12 (nivel de API 31) y versiones posteriores, los objetos PendingIntent inmutables que se pasan a la API de ubicación generarán una IllegalArgumentException.
|
BLOCK_PENDING_INTENT_SYSTEM_API_USAGE
ID del cambio: 169887240
Estado predeterminado: Habilitado para apps que se orientan a Android 12 (nivel de API 31) o versiones posteriores.
Para las apps orientadas a Android 12 (nivel de API 31) y versiones posteriores, las API del sistema LocationRequest no se pueden usar con solicitudes de ubicación PendingIntent .
|
BLOCK_UNTRUSTED_TOUCHES
ID del cambio: 158002302
Estado predeterminado: Habilitado para todas las apps.
Con el objetivo de preservar la seguridad del sistema y una buena experiencia del usuario, Android 12 evita que las apps consuman eventos táctiles, en los que una superposición bloquea la app de forma insegura.
Para obtener más información sobre este cambio, consulta Bloqueo de los eventos táctiles que no son de confianza.
|
CALL_ACTIVITY_RESULT_BEFORE_RESUME
ID del cambio: 78294732
Estado predeterminado: Habilitado para apps que se orientan a Android 12 (nivel de API 32) o versiones posteriores.
En el caso de las apps que se orientan a Android 12 (nivel de API 32) y versiones posteriores, se corrige el ciclo de vida del resultado de la actividad para garantizar que una obtiene el resultado justo antes de que se reanude.
|
CAMERA_MIC_INDICATORS_NOT_PRESENT
ID del cambio: 162547999
Estado predeterminado: Inhabilitado para todas las apps.
Determina que este dispositivo admite indicadores de cámara y micrófono. Será false si está presente porque el método CompatChanges#isChangeEnabled muestra true si el ID de cambio no está presente.
|
CANNOT_INSTALL_WITH_BAD_PERMISSION_GROUPS
ID del cambio: 146211400
Estado predeterminado: Habilitado para apps que se orientan a Android 12 (nivel de API 32) o versiones posteriores.
En el caso de las apps orientadas a Android 12 (nivel de API 32) y versiones posteriores, el administrador de paquetes no instalará un paquete si hay grupos de permisos con errores de formato.
Los grupos de permisos solo se deben compartir entre apps que compartan un certificado. Si un permiso pertenece a un grupo, también se debe definir ese grupo.
|
CHANGE_ID_AUTH_STATE_DENIED
ID del cambio: 181350407
Estado predeterminado: Habilitado para apps que se orientan a Android 12 (nivel de API 31) o versiones posteriores.
En el caso de las apps cliente orientadas a Android 12 (nivel de API 31) y versiones posteriores, se arroja una SecurityException cuando están en el estado de autorización denegado e intentan enviar un mensaje a una nanoapp.
|
CHANGE_ID_SAMPLING_RATE_SENSORS_PERMISSION
ID del cambio: 136069189
Estado predeterminado: Habilitado para apps que se orientan a Android 12 (nivel de API 31) o versiones posteriores.
En el caso de las apps orientadas a Android 12 (nivel de API 31) y versiones posteriores, se genera una SecurityException cuando no tienen el permiso HIGH_SAMPLING_RATE_SENSORS , se ejecutan en modo de depuración y solicitan tasas de muestreo más rápidas que 200 Hz.
|
DELIVER_HISTORICAL_LOCATIONS
ID del cambio: 73144566
Estado predeterminado: Habilitado para apps que se orientan a Android 12 (nivel de API 31) o versiones posteriores.
En el caso de las apps orientadas a Android 12 (nivel de API 31) y versiones posteriores, los clientes de ubicación pueden recibir ubicaciones históricas (anteriores a la fecha actual) en algunas circunstancias.
|
DISPLAY_INFO_NR_ADVANCED_SUPPORTED
ID del cambio: 181658987
Estado predeterminado: Habilitado para apps que se orientan a Android 12 (nivel de API 31) o versiones posteriores.
Para las apps orientadas a Android 12 (nivel de API 31) y versiones posteriores, proporciona retrocompatibilidad con los cambios en TelephonyDisplayInfo .
|
DISPLAY_MODE_RETURNS_PHYSICAL_REFRESH_RATE
ID del cambio: 170503758
Estado predeterminado: Habilitado para apps que se orientan a Android 12 (nivel de API 31) o versiones posteriores.
En el caso de las apps orientadas a Android 12 (nivel de API 31) y versiones posteriores, la plataforma podría reducir la velocidad de fotogramas de una app a un divisor de la frecuencia de actualización si es más preferible (por ejemplo, si la app llama a Surface.setFrameRate(float, int) ).
Las apps experimentarán devoluciones de llamadas de Choreographer.postFrameCallback(Choreographer.FrameCallback) y contrapresión a la velocidad de fotogramas limitada. Las apps usan Display.getRefreshRate() y Display.Mode.getRefreshRate() para saber cuál es la frecuencia de actualización de la pantalla. Display.getRefreshRate() siempre mostrará la velocidad de fotogramas de la aplicación y no la frecuencia de actualización de la pantalla física para permitir que las apps establezcan el ritmo de fotogramas correctamente. Display.Mode.getRefreshRate() mostrará la velocidad de fotogramas de la app si se compila en una versión anterior y, a partir de Android 12 (nivel de API 31), mostrará la frecuencia de actualización de pantalla física.
|
DOWNSCALED
ID del cambio: 168419799
Estado predeterminado: Inhabilitado para todas las apps.
Este cambio es el guardián de todos los cambios de escalamiento descendente de búfer por app. Si se habilita este cambio, se podrán aplicar los siguientes factores de escala:
Cuando se habilita este cambio para un paquete de app, se fuerza el cambio de tamaño de la app al factor de escala más alto habilitado. Por ejemplo, se usará 80% si tanto 80% como 70% (DOWNSCALE_80 y DOWNSCALE_70 ) están habilitados.
|
DOWNSCALE_30
ID del cambio: 189970040
Estado predeterminado: Inhabilitado para todas las apps.
Cuando el estado de DOWNSCALED también es habilitado, habilitar este cambio para un paquete fuerza a la app a asumir que se está ejecutando en una pantalla con una resolución vertical y horizontal del 30% de la pantalla real.
|
DOWNSCALE_35
ID del cambio: 189969749
Estado predeterminado: Inhabilitado para todas las apps.
Cuando el estado de DOWNSCALED también es habilitado, habilitar este cambio para un paquete fuerza a la app a asumir que se está ejecutando en una pantalla con el 35% de la resolución vertical y horizontal de la pantalla real.
|
DOWNSCALE_40
ID del cambio: 189970038
Estado predeterminado: Inhabilitado para todas las apps.
Cuando el estado de DOWNSCALED también es habilitado, habilitar este cambio para un paquete fuerza a la app a asumir que se está ejecutando en una pantalla con una resolución vertical y horizontal del 40% de la pantalla real.
|
DOWNSCALE_45
ID del cambio: 189969782
Estado predeterminado: Inhabilitado para todas las apps.
Cuando el estado de DOWNSCALED también es habilitado, habilitar este cambio para un paquete fuerza a la app a asumir que se está ejecutando en una pantalla con una resolución vertical y horizontal del 45% de la pantalla real.
|
DOWNSCALE_50
ID del cambio: 176926741
Estado predeterminado: Inhabilitado para todas las apps.
Cuando el estado de DOWNSCALED también es habilitado, habilitar este cambio para un paquete fuerza a la app a asumir que se está ejecutando en una pantalla con el 50% de la resolución vertical y horizontal de la pantalla real.
|
DOWNSCALE_55
ID del cambio: 189970036
Estado predeterminado: Inhabilitado para todas las apps.
Cuando el estado de DOWNSCALED también es habilitado, habilitar este cambio para un paquete fuerza a la app a asumir que se está ejecutando en una pantalla con una resolución vertical y horizontal del 55% de la pantalla real.
|
DOWNSCALE_60
ID del cambio: 176926771
Estado predeterminado: Inhabilitado para todas las apps.
Cuando el estado de DOWNSCALED también es habilitado, habilitar este cambio para un paquete fuerza a la app a asumir que se está ejecutando en una pantalla con una resolución vertical y horizontal del 60% de la pantalla real.
|
DOWNSCALE_65
ID del cambio: 189969744
Estado predeterminado: Inhabilitado para todas las apps.
Cuando el estado de DOWNSCALED también es habilitado, habilitar este cambio para un paquete fuerza a la app a asumir que se está ejecutando en una pantalla con una resolución vertical y horizontal del 65% de la pantalla real.
|
DOWNSCALE_70
ID del cambio: 176926829
Estado predeterminado: Inhabilitado para todas las apps.
Cuando el estado de DOWNSCALED también es habilitado, habilitar este cambio para un paquete fuerza a la app a asumir que se está ejecutando en una pantalla con el 70% de la resolución vertical y horizontal de la pantalla real.
|
DOWNSCALE_75
ID del cambio: 189969779
Estado predeterminado: Inhabilitado para todas las apps.
Cuando el estado de DOWNSCALED también es habilitado, habilitar este cambio para un paquete fuerza a la app a asumir que se está ejecutando en una pantalla con una resolución vertical y horizontal del 75% de la pantalla real.
|
DOWNSCALE_80
ID del cambio: 176926753
Estado predeterminado: Inhabilitado para todas las apps.
Cuando el estado de DOWNSCALED también es habilitado, habilitar este cambio para un paquete fuerza a la app a asumir que se está ejecutando en una pantalla con el 80% de la resolución vertical y horizontal de la pantalla real.
|
DOWNSCALE_85
ID del cambio: 189969734
Estado predeterminado: Inhabilitado para todas las apps.
Cuando el estado de DOWNSCALED también es habilitado, habilitar este cambio para un paquete fuerza a la app a asumir que se está ejecutando en una pantalla con el 85% de la resolución vertical y horizontal de la pantalla real.
|
DOWNSCALE_90
ID del cambio: 182811243
Estado predeterminado: Inhabilitado para todas las apps.
Cuando el estado de DOWNSCALED también es habilitado, habilitar este cambio para un paquete fuerza a la app a asumir que se está ejecutando en una pantalla con el 90% de la resolución vertical y horizontal de la pantalla real.
|
DO_NOT_DOWNSCALE_TO_1080P_ON_TV
ID del cambio: 157629738
Estado predeterminado: Habilitado para apps que se orientan a Android 12 (nivel de API 31) o versiones posteriores.
Se espera que las apps de Android TV orientadas a Android 12 (nivel de API 31) y versiones posteriores procesen cualquier tamaño de ventana, incluidos los tamaños de ventana superiores a 1080p.
Las apps orientadas a versiones anteriores de Android no esperan recibir ventanas de más de 1080p, por lo que sus ventanas se reducen a 1080p cuando es necesario.
|
DROP_CLOSE_SYSTEM_DIALOGS
ID del cambio: 174664120
Estado predeterminado: Habilitado para todas las apps.
Para mejorar el control del usuario cuando interactúa con apps y el sistema, la acción de intent ACTION_CLOSE_SYSTEM_DIALOGS deja de estar disponible a partir de Android 12.
Para obtener más información sobre este cambio, consulta Las apps no pueden cerrar los diálogos del sistema.
|
ENABLE_CHECKS_FOR_PRIVATE_FILES
ID del cambio: 172100307
Estado predeterminado: Habilitado para apps que se orientan a Android 12 (nivel de API 31) o versiones posteriores.
Las apps orientadas a Android 12 (nivel de API 31) y versiones posteriores no pueden insertar ni actualizar archivos privados con el proveedor de contenido multimedia.
|
ENABLE_DEFERRED_SCAN
ID del cambio: 180326732
Estado predeterminado: Habilitado para apps que se orientan a Android 12 (nivel de API 31) o versiones posteriores.
Habilita esta opción a fin de diferir el análisis que se activa como parte de MediaProvider#update() .
|
ENABLE_GET_CALL_STATE_PERMISSION_PROTECTION
ID del cambio: 157233955
Estado predeterminado: Habilitado para apps que se orientan a Android 12 (nivel de API 31) o versiones posteriores.
En el caso de las apps orientadas a Android 12 (nivel de API 31) y versiones posteriores, habilita la protección READ_PHONE_STATE en las consultas de API y la notificación del estado de las llamadas, como TelecomManager#getCallState , TelephonyManager.getCallStateForSubscription() y TelephonyCallback.CallStateListener .
|
ENABLE_GET_PHONE_ACCOUNT_PERMISSION_PROTECTION
ID del cambio: 183407956
Estado predeterminado: Habilitado para apps que se orientan a Android 12 (nivel de API 31) o versiones posteriores.
En el caso de las apps orientadas a Android 12 (nivel de API 31) y versiones posteriores, habilita las protecciones READ_PHONE_NUMBERS o READ_PRIVILEGED_PHONE_STATE en getPhoneAccount(PhoneAccountHandle) .
|
ENABLE_INCLUDE_ALL_VOLUMES
ID del cambio: 182734110
Estado predeterminado: Habilitado para apps que se orientan a Android 12 (nivel de API 31) o versiones posteriores.
Habilita esta opción a fin de incluir filas de archivos de la base de datos de un volumen desactivado recientemente en MediaProvider#query .
|
ENABLE_RAW_MANAGE_EXTERNAL_STORAGE_ACCESS
ID del cambio: 178209446
Estado predeterminado: Habilitado para apps que se orientan a Android 12 (nivel de API 31) o versiones posteriores.
Habilita esta opción a fin de permitir que las apps que tienen el permiso Manifest.permission.MANAGE_EXTERNAL_STORAGE soliciten acceso al almacenamiento externo sin procesar.
|
ENFORCE_MINIMUM_WINDOW_ON_INEXACT_ALARMS
ID del cambio: 185199076
Estado predeterminado: Habilitado para apps que se orientan a Android 12 (nivel de API 31) o versiones posteriores.
Para las apps orientadas a Android 12 (nivel de API 31) y versiones posteriores, todas las alarmas inexactas deben tener un tamaño mínimo de ventana, que se espera que sea de unos pocos minutos. En la práctica, todas las alarmas que requieran ventanas más pequeñas son las mismas que las alarmas exactas y deberían usar las API correspondientes proporcionadas, como setExact(int, long, PendingIntent) . Las alarmas inexactas con ventanas más cortas especificadas harán que el sistema alargue sus ventanas.
|
ENFORCE_NATIVE_SHARED_LIBRARY_DEPENDENCIES
ID del cambio: 142191088
Estado predeterminado: Habilitado para apps que se orientan a Android 12 (nivel de API 31) o versiones posteriores.
Las apps orientadas a Android 12 (nivel de API 31) y versiones posteriores deben declarar dependencias a las bibliotecas compartidas nativas y públicas que define el fabricante del dispositivo con la etiqueta uses-native-library en su AndroidManifest.xml . Si alguna de las dependencias no se puede cumplir (por ejemplo, una de las dependencias no existe), el administrador de paquetes no instalará la app. La dependencia se puede especificar como opcional mediante el atributo android:required en la etiqueta y, en caso de no satisfacer la dependencia, no se detendrá la instalación.
Una vez instalada, se proporciona una app solo con las bibliotecas compartidas nativas especificadas en el manifiesto de la app. La llamada a dlopen en una biblioteca compartida nativa que no aparece en el manifiesto de la app fallará incluso si existe en el dispositivo.
|
ENFORCE_STRICT_QUERY_BUILDER
ID del cambio: 143231523
Estado predeterminado: Inhabilitado para todas las apps.
Cuando se habilita, SQLiteQueryBuilder verifica todas las selecciones de consultas de CalendarProvider2 con argumentos maliciosos.
|
FGS_BG_START_RESTRICTION_CHANGE_ID
ID del cambio: 170668199
Estado predeterminado: Habilitado para apps que se orientan a Android 12 (nivel de API 31) o versiones posteriores.
En el caso de las apps orientadas a Android 12 (nivel de API 31) y versiones posteriores, restringe cuándo las apps pueden iniciar servicios en primer plano mientras se ejecutan en segundo plano.
|
FGS_START_EXCEPTION_CHANGE_ID
ID del cambio: 174041399
Estado predeterminado: Habilitado para apps que se orientan a Android 12 (nivel de API 31) o versiones posteriores.
En el caso de las apps orientadas a Android 12 (nivel de API 31) y versiones posteriores, permite que el sistema muestre una IllegalStateException si una app intenta iniciar un servicio en primer plano mientras se ejecuta en segundo plano.
|
ID del cambio: 156215187
Estado predeterminado: Inhabilitado para todas las apps.
En el caso de las apps orientadas a Android 12 (nivel de API 31) y versiones posteriores, finaliza la InputConnection cuando el dispositivo sea non-interactive .
Si la input method actual la habilita, la conexión de entrada actual será finished cada vez que los dispositivos se vuelvan no interactivos.
Si no está habilitada, la conexión de entrada actual se desactivará de manera silenciosa cuando los dispositivos se vuelvan no interactivos, y se enviará un par de onFinishInput() y onStartInput() cuando el dispositivo vuelva a ser interactivo.
|
FORCE_DISABLE_HEVC_SUPPORT
ID del cambio: 174227820
Estado predeterminado: Inhabilitado para todas las apps.
Fuerza la inhabilitación de una app para que no sea compatible con la capacidad de contenido multimedia HEVC.
Las apps deben declarar las capacidades de contenido multimedia admitidas en su manifiesto, pero esta marca puede usarse para forzar el acceso de una app a HEVC, lo que fuerza la transcodificación mientras se accede al contenido multimedia codificado en HEVC. La configuración de esta marca anula cualquier valor predeterminado en el nivel del SO para las apps. Está inhabilitado de forma predeterminada, lo que significa que los valores predeterminados del SO tienen prioridad. Si se habilitan esta marca y FORCE_ENABLE_HEVC_SUPPORT , el SO ignora ambas marcas.
|
FORCE_ENABLE_HEVC_SUPPORT
ID del cambio: 174228127
Estado predeterminado: Inhabilitado para todas las apps.
Fuerza a una app a admitir la capacidad de contenido multimedia HEVC. Las apps deberían declarar las capacidades de contenido multimedia en su manifiesto, pero esta marca se puede usar para forzar a la app a admitir HEVC. Por lo tanto, se debe evitar la transcodificación mientras se accede al contenido multimedia codificado en HEVC. La configuración de esta marca anula cualquier valor predeterminado en el nivel del SO para las apps. Está inhabilitado de forma predeterminada, lo que significa que los valores predeterminados del SO tendrán prioridad. Si se habilitan esta marca y FORCE_DISABLE_HEVC_SUPPORT , el SO ignora ambas marcas.
|
FORCE_NON_RESIZE_APP
ID del cambio: 181136395
Estado predeterminado: Inhabilitado para todas las apps.
Fuerza los paquetes a los que se aplica de modo que no puedan cambiar el tamaño.
|
FORCE_RESIZE_APP
ID del cambio: 174042936
Estado predeterminado: Inhabilitado para todas las apps.
Fuerza los paquetes a los que se aplica para que puedan cambiar el tamaño. Solo permitimos cambiar el tamaño en el modo de renderización de ventanas de pantalla completa, pero no se fuerza a la app a cambiar el tamaño del modo multiventana.
|
HIDE_PROP_ICUBINARY_DATA_PATH
ID del cambio: 171979766
Estado predeterminado: Habilitado para apps que se orientan a Android 12 (nivel de API 31) o versiones posteriores.
En el caso de las apps orientadas a Android 12 (nivel de API 31) y versiones posteriores, quita el acceso a la propiedad android.icu.impl.ICUBinary.dataPath .
|
IGNORE_ALLOW_BACKUP_IN_D2D
ID del cambio: 183147249
Estado predeterminado: Habilitado para apps que se orientan a Android 12 (nivel de API 31) o versiones posteriores.
En el caso de las apps orientadas a Android 12 (nivel de API 31) y versiones posteriores, se ignora android:allowBackup para las apps durante las migraciones de dispositivo a dispositivo (D2D).
|
IGNORE_FULL_BACKUP_CONTENT_IN_D2D
ID del cambio: 180523564
Estado predeterminado: Habilitado para apps que se orientan a Android 12 (nivel de API 31) o versiones posteriores.
En el caso de las apps orientadas a Android 12 (nivel de API 31) y versiones posteriores, las reglas de inclusión y exclusión especificadas mediante android:fullBackupContent se ignoran durante las transferencias de dispositivo a dispositivo (D2D).
|
IME_AUTOFILL_DEFAULT_SUPPORTED_LOCALES_IS_EMPTY
ID del cambio: 169273070
Estado predeterminado: Habilitado para apps que se orientan a Android 12 (nivel de API 31) o versiones posteriores.
En el caso de las apps orientadas a Android 12 (nivel de API 31) y versiones posteriores, getSupportedLocales() ahora muestra una lista de configuraciones regionales vacía cuando no está configurada, en lugar de la configuración regional predeterminada del sistema.
|
IS_BACKUP_SERVICE_ACTIVE_ENFORCE_PERMISSION_IN_SERVICE
ID del cambio: 158482162
Estado predeterminado: Habilitado para apps que se orientan a Android 12 (nivel de API 31) o versiones posteriores.
En el caso de las apps orientadas a Android 12 (nivel de API 31) y versiones posteriores, se aplica el permiso BACKUP necesario para isBackupServiceActive() del lado del servicio y no del cliente en BackupManager .
|
KEYSTORE_OPERATION_CREATION_MAY_FAIL
ID del cambio: 169897160
Estado predeterminado: Inhabilitado para todas las apps.
Cuando está habilitada, la creación de la operación del almacén de claves puede fallar según la nueva estrategia de reducción. Los almacenes de claves solían trabajar bajo la suposición de que la creación de operaciones criptográficas siempre se realizaba correctamente.
Sin embargo, el backend de KeyMint solo tiene una cantidad limitada de ranuras de operación.
Para mantener la apariencia de las ranuras de las operaciones "infinitas", el daemon del almacén de claves reducía las operaciones usadas recientemente si no había una ranura de operación disponible. Como resultado, las operaciones buenas se podían finalizar de forma prematura. Esto llevaba a AndroidKeystore a la denegación del servicio (DoS) y un bloqueo activo no intencional. Por ejemplo, si varias apps se activaban al mismo tiempo debido a optimizaciones de administración de energía e intentaban realizar operaciones criptográficas, comenzaban a finalizar las operaciones entre sí sin ningún progreso.
Para salir de los bloqueos activos y desalentar los intentos de DoS, cambiamos la estrategia de poda para que prefiera clientes que usen pocas ranuras de operación. Como resultado, las operaciones individuales que no resultan inactivas por más de 5 segundos casi siempre concluirán sin problemas gracias a la estrategia de reducción. Aún existen algunas operaciones relacionadas con la encriptación del sistema de archivos que pueden reducir incluso estas operaciones, pero son casos poco frecuentes. Como efecto secundario de esta nueva operación de estrategia de reducción, ahora la creación puede fallar si el cliente tiene una potencia de reducción menor que todas las operaciones existentes.
Estrategia de poda: Para encontrar un candidato adecuado, calculamos el malus para el emisor y cada operación existente. El malus es la inversa de la potencia de poda (emisor) o la resistencia a la poda (operación existente). Para que el emisor pueda reducir una operación, debe buscar una operación con un malus superior al suyo. Para obtener más información sobre la estrategia de reducción, consulta la implementación de operation.rs .
En Android 11 (nivel de API 30) y versiones anteriores, KeyStore2 consultará el daemon del almacén de claves para obtener un espacio de operación libre. En el caso de las apps orientadas a Android 11 (nivel de API 30) y versiones anteriores, seguirá pareciendo que la inicialización del objeto de firma y el algoritmo de cifrado siempre es exitosa; sin embargo, obtener una operación podría demorar más tiempo. Todas las versiones de Android se benefician de la programación de ranuras de operación más justas y una mejor oportunidad para finalizar una operación con éxito.
|
LOCK_DOWN_CLOSE_SYSTEM_DIALOGS
ID del cambio: 174664365
Estado predeterminado: Habilitado para apps que se orientan a Android 12 (nivel de API 31) o versiones posteriores.
En el caso de las apps orientadas a Android 12 (nivel de API 31) y versiones posteriores, no se puede enviar Intent.ACTION_CLOSE_SYSTEM_DIALOGS , a menos que la app también tenga el permiso android.permission.BROADCAST_CLOSE_SYSTEM_DIALOGS . Ten en cuenta que esta es la versión más restrictiva de #DROP_CLOSE_SYSTEM_DIALOGS que espera que la app deje de enviar el intent Intent.ACTION_CLOSE_SYSTEM_DIALOGS una vez que esta se inicia en Android 12 (nivel de API 31) o versiones posteriores.
|
LOCK_DOWN_COLLAPSE_STATUS_BAR
ID del cambio: 173031413
Estado predeterminado: Habilitado para apps que se orientan a Android 12 (nivel de API 31) o versiones posteriores.
En el caso de las apps orientadas a Android 12 (nivel de API 31) y versiones posteriores, se requiere el permiso Manifest.permission.STATUS_BAR para contraer los paneles de la barra de estado por razones de seguridad. Algunos softwares maliciosos estaban aprovechando esto para evitar que el usuario acceda a notificaciones críticas.
|
LOW_POWER_EXCEPTIONS
ID del cambio: 168936375
Estado predeterminado: Habilitado para apps que se orientan a Android 12 (nivel de API 31) o versiones posteriores.
En el caso de las apps orientadas a Android 12 (nivel de API 31) y versiones posteriores, todos los objetos LocationRequest marcados como con potencia baja lanzan una excepción si el llamador no tiene el permiso LOCATION_HARDWARE , en lugar de descartar silenciosamente la baja potencia de la solicitud.
|
MISSING_EXPORTED_FLAG
ID del cambio: 150232615
Estado predeterminado: Habilitado para apps que se orientan a Android 12 (nivel de API 31) o versiones posteriores.
En el caso de las apps orientadas a Android 12 (nivel de API 31) y versiones posteriores, se debe especificar un valor explícito para el atributo android:exported cada vez que se define un filtro de intents.
Si quieres obtener más información sobre este cambio, consulta Exportación de componentes más segura.
|
NATIVE_HEAP_POINTER_TAGGING_APP_ZYGOTE
ID del cambio: 207557677
Estado predeterminado: Habilitado para apps que se orientan a Android 12 (nivel de API 32) o versiones posteriores.
En el caso de las apps que se orientan a Android 12 (nivel de API 32) y versiones posteriores, las asignaciones de montón nativas en el proceso AppZygote y sus descendientes usan una etiqueta distinta de cero en el byte más importante.
Para obtener más información sobre este cambio, consulta Punteros etiquetados.
|
NATIVE_HEAP_ZERO_INIT
ID del cambio: 178038272
Estado predeterminado: Inhabilitado para todas las apps.
Habilita la inicialización automática en cero de las asignaciones nativas de memoria del montón.
|
NATIVE_MEMTAG_ASYNC
ID del cambio: 135772972
Estado predeterminado: Inhabilitado para todas las apps.
Habilita la verificación de etiquetas de memoria asíncrona (ASYNC) en este proceso. Esta marca solo afecta el hardware que admite la extensión de etiquetado de memoria (MTE) de ARM.
|
NATIVE_MEMTAG_SYNC
ID del cambio: 177438394
Estado predeterminado: Inhabilitado para todas las apps.
Habilita la verificación de etiquetas de memoria síncrona (SYNC) en este proceso. Esta marca solo afecta el hardware que admite la extensión de etiquetado de memoria (MTE) de ARM. Si NATIVE_MEMTAG_ASYNC y esta opción están habilitadas, esta opción tiene prioridad y la MTE se habilita en modo SYNC.
|
NEVER_SANDBOX_DISPLAY_APIS
ID del cambio: 184838306
Estado predeterminado: Inhabilitado para todas las apps.
Cuando se habilita, impide que la zona de pruebas de la API de Display se aplique a un letterbox o a la actividad de SCM. Las APIs de Display continuarán proporcionando los límites DisplayArea.
Para obtener más información sobre este cambio, consulta la sección sobre
métodos de Display obsoletos en la página de cambios de comportamiento de Android 12.
|
NOTIFICATION_CANCELLATION_REASONS
ID del cambio: 175319604
Estado predeterminado: Habilitado para apps que se orientan a Android 12 (nivel de API 31) o versiones posteriores.
Permite que los objetos de escucha de notificaciones comprendan nuevos motivos de cancelación más específicos.
|
NOTIFICATION_TRAMPOLINE_BLOCK
ID del cambio: 167676448
Estado predeterminado: Habilitado para apps que se orientan a Android 12 (nivel de API 31) o versiones posteriores.
Para mejorar el rendimiento y la UX de las apps, las aplicaciones orientadas a Android 12 no pueden usar servicios ni receptores de emisión como trampolines de notificación.
Si quieres obtener más información sobre este cambio, consulta No es posible crear trampolines de notificación desde servicios o receptores de emisión.
|
NULL_TELEPHONY_THROW_NO_CB
ID del cambio: 182185642
Estado predeterminado: Habilitado para apps que se orientan a Android 12 (nivel de API 31) o versiones posteriores.
Se usa a fin de verificar si la versión del SDK de destino para el proceso actual es Android 12 (nivel de API 31) o una posterior.
Se aplica a los siguientes métodos:
|
OVERRIDE_MIN_ASPECT_RATIO
ID del cambio: 174042980
Estado predeterminado: Inhabilitado para todas las apps.
Este cambio es el guardián de todos los cambios que fuercen una relación de aspecto mínima dada. Si se habilita este cambio, se podrán aplicar las siguientes relaciones de aspecto mínimas:
Cuando se habilita este cambio para un paquete de app, la relación de aspecto mínima proporcionada en el manifiesto de la app se anula con la relación de aspecto más grande habilitada, a menos que el valor del manifiesto de la app sea superior.
|
OVERRIDE_MIN_ASPECT_RATIO_LARGE
ID del cambio: 180326787
Estado predeterminado: Inhabilitado para todas las apps.
Cuando el estado de OVERRIDE_MIN_ASPECT_RATIO también es habilitado, habilitar este cambio para un paquete establece la relación de aspecto mínima de la actividad en un valor grande definido por OVERRIDE_MIN_ASPECT_RATIO_LARGE_VALUE .
|
OVERRIDE_MIN_ASPECT_RATIO_MEDIUM
ID del cambio: 180326845
Estado predeterminado: Inhabilitado para todas las apps.
Cuando el estado de OVERRIDE_MIN_ASPECT_RATIO también es habilitado, habilitar este cambio para un paquete establece la relación de aspecto mínima de la actividad en un valor medio definido por OVERRIDE_MIN_ASPECT_RATIO_MEDIUM_VALUE .
|
PENDING_INTENT_EXPLICIT_MUTABILITY_REQUIRED
ID del cambio: 160794467
Estado predeterminado: Habilitado para apps que se orientan a Android 12 (nivel de API 31) o versiones posteriores.
Para las apps orientadas a Android 12 (nivel de API 31) y versiones posteriores, debes especificar la mutabilidad de cada objeto PendingIntent que crea tu app. Este requisito adicional mejora la seguridad de tu app.
Para obtener más información sobre este cambio, consulta Los intents pendientes deben declarar la mutabilidad.
|
PREVENT_SETTING_PASSWORD_QUALITY_ON_PARENT
ID del cambio: 165573442
Estado predeterminado: Habilitado para apps que se orientan a Android 12 (nivel de API 31) o versiones posteriores.
Las apps de administración orientadas a Android 12 (nivel de API 31) y versiones posteriores no pueden usar DevicePolicyManager.setPasswordQuality(ComponentName, int) para establecer la calidad de la contraseña en la instancia DevicePolicyManager que se obtiene mediante una llamada a DevicePolicyManager.getParentProfileInstance(ComponentName) .
En cambio, deben usar DevicePolicyManager.setRequiredPasswordComplexity(int) para establecer requisitos de contraseñas generales en todo el dispositivo.
|
RATE_LIMIT_TOASTS
ID del cambio: 174840628
Estado predeterminado: Este cambio no se puede activar ni desactivar. Solo se registra en el marco de compatibilidad.
Habilita el límite de frecuencia en la cantidad de llamadas a Toast.show() para evitar que el usuario se sobrecargue con demasiados avisos en un tiempo limitado. Cualquier intento de mostrar más avisos de lo que se permite en un período determinado hará que se descarten los avisos.
|
REQUIRE_EXACT_ALARM_PERMISSION
ID del cambio: 171306433
Estado predeterminado: Habilitado para apps que se orientan a Android 12 (nivel de API 31) o versiones posteriores.
En el caso de las apps orientadas a Android 12 (nivel de API 31) y versiones posteriores, las apps deben tener el permiso Manifest.permission.SCHEDULE_EXACT_ALARM para usar cualquier API a fin de establecer alarmas exactas, como setExactAndAllowWhileIdle(int, long, PendingIntent) y setAlarmClock(AlarmClockInfo, PendingIntent) .
|
REQUIRE_READ_PHONE_STATE_PERMISSION_FOR_ACTIVE_DATA_SUB_ID
ID del cambio: 182478738
Estado predeterminado: Habilitado para apps que se orientan a Android 12 (nivel de API 31) o versiones posteriores.
En el caso de las apps orientadas a Android 12 (nivel de API 31) y versiones posteriores, las apps deben tener el permiso Manifest.permission.READ_PHONE_STATE para llamar a TelephonyCallback.ActiveDataSubscriptionIdListener .
|
REQUIRE_READ_PHONE_STATE_PERMISSION_FOR_CELL_INFO
ID del cambio: 184323934
Estado predeterminado: Habilitado para apps que se orientan a Android 12 (nivel de API 31) o versiones posteriores.
En el caso de las apps orientadas a Android 12 (nivel de API 31) y versiones posteriores, las apps deben tener el permiso Manifest.permission.READ_PHONE_STATE para llamar a TelephonyCallback.CellInfoListener .
|
REQUIRE_READ_PHONE_STATE_PERMISSION_FOR_DISPLAY_INFO
ID del cambio: 183164979
Estado predeterminado: Habilitado para apps que se orientan a Android 12 (nivel de API 31) o versiones posteriores.
En el caso de las apps orientadas a Android 12 (nivel de API 31) y versiones posteriores, las apps deben tener el permiso Manifest.permission.READ_PHONE_STATE para llamar a TelephonyCallback.DisplayInfoListener .
|
RESTRICT_ADB_BACKUP
ID del cambio: 171032338
Estado predeterminado: Habilitado para apps que se orientan a Android 12 (nivel de API 31) o versiones posteriores.
En el caso de las apps orientadas a Android 12 (nivel de API 31) y versiones posteriores, adb backup se activa automáticamente para las apps que se ejecutan como depurables (android:debuggable establecido en true ) y no está disponible para ninguna otra app.
|
RESTRICT_DOMAINS
ID del cambio: 175408749
Estado predeterminado: Habilitado para apps que se orientan a Android 12 (nivel de API 31) o versiones posteriores.
En el caso de las apps orientadas a Android 12 (nivel de API 31) y versiones posteriores, se requiere el formato actualizado de la API de verificación de vínculos de apps. Este requisito implica que una app debe declarar dominios dentro de un filtro de intents que incluya lo siguiente:
android:autoVerify="true"
Intent.ACTION_VIEW
Intent.CATEGORY_BROWSABLE
Intet.CATEGORY_DEFAULT
- Solo
IntentFilter.SCHEME_HTTP o IntentFilter.SCHEME_HTTPS , sin otros esquemas
En versiones anteriores de Android, Intent.CATEGORY_BROWSABLE no era un requisito, se permitían otros esquemas y configurar autoVerify como true en cualquier filtro de intents fingía de manera implícita que todos los filtros de intents se establecieran como autoVerify="true" .
|
SECURITY_EXCEPTION_ON_INVALID_ATTRIBUTION_TAG_CHANGE
ID del cambio: 151105954
Estado predeterminado: Habilitado para apps que se orientan a Android 12 (nivel de API 31) o versiones posteriores.
En el caso de las apps orientadas a Android 12 (nivel de API 31) y versiones posteriores, exige que todas las attributionTags enviadas a noteOp(String, int, String) , noteProxyOp(String, String) y startOp(String, int, String) estén definidas en manifiesto del paquete que se especifica como un parámetro de los métodos.
A fin de habilitar este cambio, el paquete que llama a noteOp(String, int, String) y el paquete especificado como parámetro del método deben tener habilitado este cambio.
|
SELINUX_LATEST_CHANGES
ID del cambio: 143539591
Estado predeterminado: Habilitado para apps que se orientan a Android 12 (nivel de API 31) o versiones posteriores.
Para las apps orientadas a Android 12 (nivel de API 31) y versiones posteriores, habilita los cambios más recientes de SELinux. Desactivar este cambio para una app orientada a Android 12 (nivel de API 31) o una versión posterior es una no-op. No tiene efecto en apps que usan un ID de usuario compartido.
|
SETTINGS_API_V2
ID del cambio: 178111421
Estado predeterminado: Habilitado para todas las apps.
La API nueva de preferencias del usuario, que verifica dominios marcados como autoVerify=true en los filtros de intents de AndroidManifest.xml, aún no se implementó en la vista previa actual de la plataforma. Por ahora, es posible obtener una vista previa de los cambios en las nuevas preferencias de los usuarios habilitando este ChangeId y usando adb shell pm set-app-links-user-selection y comandos similares.
|
USE_SHORT_FGS_USAGE_INTERACTION_TIME
ID del cambio: 183972877
Estado predeterminado: Habilitado para apps que se orientan a Android 12 (nivel de API 31) o versiones posteriores.
En el caso de las apps orientadas a Android 12 (nivel de API 31) y versiones posteriores, determina si se usa un tiempo de espera más corto antes de elevar el intervalo de Standby a ACTIVE cuando las apps inician un servicio en primer plano.
|