Como nas versões anteriores, o Android 16 inclui mudanças de comportamento que podem afetar seu app. As mudanças de comportamento abaixo se aplicam exclusivamente a apps destinados ao Android 16 ou versões mais recentes. Caso seu app seja direcionado ao Android 16 ou a versões mais recentes, faça modificações para oferecer suporte a esses comportamentos, quando aplicável.
Consulte também a lista de mudanças de comportamento que afetam todos os apps
executados no Android 16, independente da targetSdkVersion do app.
Experiência do usuário e interface do sistema
O Android 16 (nível 36 da API) inclui as mudanças a seguir, que têm como objetivo criar uma experiência do usuário mais consistente e intuitiva.
A opção de desativar a exibição de ponta a ponta vai ser removida
Android 15 强制要求以 Android 15(API 级别 35)为目标平台的应用采用边到边模式,但您的应用可以通过将 R.attr#windowOptOutEdgeToEdgeEnforcement 设置为 true 来选择退出此模式。对于以 Android 16(API 级别 36)为目标平台的应用,R.attr#windowOptOutEdgeToEdgeEnforcement 已废弃并停用,并且您的应用无法选择停用边到边模式。
- 如果您的应用以 Android 16(API 级别 36)为目标平台,并且在 Android 15 设备上运行,
R.attr#windowOptOutEdgeToEdgeEnforcement会继续运行。 - 如果您的应用以 Android 16(API 级别 36)为目标平台,并且在 Android 16 设备上运行,则
R.attr#windowOptOutEdgeToEdgeEnforcement会处于停用状态。
如需在 Android 16 中进行测试,请确保您的应用支持无边框,并移除对 R.attr#windowOptOutEdgeToEdgeEnforcement 的任何使用,以便您的应用在 Android 15 设备上也支持无边框。如需支持边到边,请参阅 Compose 和视图指南。
Migração ou desativação necessária para o gesto de voltar preditivo
For apps targeting Android 16 (API level 36) or higher and running on an
Android 16 or higher device, the predictive back system animations
(back-to-home, cross-task, and cross-activity) are enabled by default.
Additionally, onBackPressed is not called and
KeyEvent.KEYCODE_BACK is not dispatched anymore.
If your app intercepts the back event and you haven't migrated to predictive
back yet, update your app to use supported back navigation APIs, or
temporarily opt out by setting the
android:enableOnBackInvokedCallback attribute to false in the
<application> or <activity> tag of your app's AndroidManifest.xml file.
APIs de fontes elegantes descontinuadas e desativadas
以 Android 15(API 级别 35)为目标平台的应用默认将 elegantTextHeight
TextView 属性设置为 true,从而将紧凑型字体替换为可读性更高的字体。您可以通过将 elegantTextHeight 属性设置为 false 来替换此设置。
Android 16 弃用了 elegantTextHeight 属性,当您的应用以 Android 16 为目标平台后,系统会忽略该属性。由这些 API 控制的“界面字体”即将停用,因此您应调整所有布局,以确保阿拉伯语、老挝语、缅甸语、泰米尔语、古吉拉特语、卡纳达语、马拉雅拉姆语、奥里亚语、泰卢固语或泰语文本的呈现效果一致且不受未来变化的影响。
elegantTextHeight 属性设置为 false 替换默认值的应用,
elegantTextHeight 行为。elegantTextHeight 属性设置为 false 来替换默认值的应用,其 elegantTextHeight 行为。
Principal recurso
O Android 16 (nível 36 da API) inclui as mudanças abaixo, que modificam ou ampliam vários recursos principais do sistema Android.
Otimização da programação de trabalho com taxa fixa
Antes de segmentar o Android 16, quando o scheduleAtFixedRate
perdia uma execução de tarefa por estar fora de um
ciclo de vida do processo válido, todas as execuções perdidas eram executadas imediatamente
quando o app retornava a um ciclo de vida válido.
Ao segmentar o Android 16, no máximo uma execução perdida de
scheduleAtFixedRate é executada imediatamente quando o app
retorna a um ciclo de vida válido. Essa mudança de comportamento deve melhorar o desempenho
do app. Teste esse comportamento no seu app para verificar se ele é afetado.
Também é possível testar usando o framework de compatibilidade de apps
e ativando a flag de compatibilidade STPE_SKIP_MULTIPLE_MISSED_PERIODIC_TASKS.
Formatos de dispositivo
O Android 16 (nível 36 da API) inclui as seguintes mudanças para apps quando exibidos em dispositivos de tela grande.
Layouts adaptáveis
Android 应用现在可在各种设备(例如手机、平板电脑、可折叠设备、桌面设备、汽车和电视)上运行,并支持大屏设备上的各种窗口模式(例如分屏和窗口化模式),因此开发者应构建能够适应任何屏幕和窗口大小的 Android 应用,无论设备屏幕方向如何。在当今的多设备世界中,限制屏幕方向和尺寸可调整性等范式过于严格。
忽略屏幕方向、尺寸调整和宽高比限制
对于以 Android 16(API 级别 36)为目标平台的应用,屏幕方向、尺寸调整和宽高比限制不再适用于最小宽度 >= 600dp 的显示屏。应用会填满整个显示窗口,无论宽高比或用户首选屏幕方向如何,并且不使用邮筒模式。
此项变更引入了新的标准平台行为。Android 正在转向一种模式,其中应用需要适应各种屏幕方向、显示大小和宽高比。固定屏幕方向或尺寸调整受限等限制会阻碍应用自适应。使您的应用具有自适应性,以提供最佳用户体验。
您还可以使用应用兼容性框架并启用 UNIVERSAL_RESIZABLE_BY_DEFAULT 兼容性标志来测试此行为。
常见破坏性更改
忽略屏幕方向、尺寸调整和宽高比限制可能会影响应用在某些设备上的界面,尤其是针对锁定为纵向的小布局设计的元素:例如,布局拉伸以及动画和组件超出屏幕等问题。任何关于宽高比或屏幕方向的假设都可能导致应用出现视觉问题。详细了解如何避免这些问题并改进应用的自适应行为。
允许设备旋转会导致更多 activity 重新创建,如果未正确保留,可能会导致用户状态丢失。如需了解如何正确保存界面状态,请参阅保存界面状态。
实现细节
在大屏设备上,在全屏模式和多窗口模式下,系统会忽略以下清单属性和运行时 API:
screenOrientationresizableActivityminAspectRatiomaxAspectRatiosetRequestedOrientation()getRequestedOrientation()
系统会忽略 screenOrientation、setRequestedOrientation() 和 getRequestedOrientation() 的以下值:
portraitreversePortraitsensorPortraituserPortraitlandscapereverseLandscapesensorLandscapeuserLandscape
对于显示屏大小可调整性,android:resizeableActivity="false"、android:minAspectRatio 和 android:maxAspectRatio 不会产生任何影响。
对于以 Android 16(API 级别 36)为目标平台的应用,默认情况下,大屏设备会忽略应用对于屏幕方向、尺寸调整和宽高比的限制。每个尚未完全准备就绪的应用都可以通过选择停用此行为来暂时替换此行为,从而恢复到之前的行为,即置于兼容模式。
例外情况
Android 16 的屏幕方向、尺寸可调整性和宽高比限制不适用于以下情况:
- 游戏(基于
android:appCategory标志) - 用户在设备的宽高比设置中明确选择启用应用的默认行为
- 小于
sw600dp的屏幕
暂时停用
如需停用特定 activity,请声明 PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY 清单属性:
<activity ...>
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY" android:value="true" />
...
</activity>
如果您的应用有太多部分尚未准备好支持 Android 16,您可以在应用级别应用同一属性,以完全停用该功能:
<application ...>
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY" android:value="true" />
</application>
Saúde e fitness
O Android 16 (nível 36 da API) inclui as seguintes mudanças relacionadas a dados de saúde e condicionamento físico.
Permissões de saúde e fitness
对于以 Android 16(API 级别 36)或更高版本为目标平台的应用,BODY_SENSORS 权限会使用 android.permissions.health 下更精细的权限,Health Connect 也会使用这些权限。从 Android 16 开始,凡是以前需要具有 BODY_SENSORS 或 BODY_SENSORS_BACKGROUND 权限的 API,现在都需要获取相应的 android.permissions.health 权限。这会影响以下数据类型、API 和前台服务类型:
- Wear OS 上的健康服务中的
HEART_RATE_BPM Sensor.TYPE_HEART_RATE(来自 Android 传感器管理器)- Wear OS 上的
heartRateAccuracy和heartRateBpm(来自ProtoLayout) FOREGROUND_SERVICE_TYPE_HEALTH,其中需要相应的android.permission.health权限,而不是BODY_SENSORS
如果您的应用使用这些 API,则应请求相应的精细权限:
- 如需在使用期间监测心率、血氧饱和度或体表温度,请请求
android.permissions.health下的精细权限,例如READ_HEART_RATE,而不是BODY_SENSORS。 - 对于后台传感器访问权限:请求
READ_HEALTH_DATA_IN_BACKGROUND,而不是BODY_SENSORS_BACKGROUND。
这些权限与保护对健康数据共享(用于存储健康、健身和身心状态数据的 Android 数据存储区)中读取数据的访问权限相同。
移动应用
迁移到使用 READ_HEART_RATE 和其他精细权限的移动应用还必须声明一个 activity,以显示应用的隐私权政策。此要求与健康数据共享相同。
Conectividade
O Android 16 (nível 36 da API) inclui as seguintes mudanças na pilha do Bluetooth para melhorar a conectividade com dispositivos periféricos.
Novas intents para lidar com perda de vínculo e mudanças na criptografia
Como parte do Processamento de perda de vínculo aprimorado, o Android 16 também apresenta duas novas intents para dar aos apps mais consciência da perda de vínculo e mudanças de criptografia.
Os apps destinados ao Android 16 agora podem:
- Receber uma intent
ACTION_KEY_MISSINGquando a perda de vínculo remoto é detectada, permitindo que eles forneçam feedback mais informativo ao usuário e realizem ações adequadas. - Receba uma intent
ACTION_ENCRYPTION_CHANGEsempre que o status de criptografia do link mudar. Isso inclui a mudança de status de criptografia, de algoritmo de criptografia e de tamanho da chave de criptografia. Os apps precisam considerar a vinculação restaurada se o link for criptografado ao receber a intentACTION_ENCRYPTION_CHANGEmais tarde.
Como se adaptar a diferentes implementações de OEM
Embora o Android 16 apresente essas novas intents, a implementação e a transmissão delas podem variar de acordo com os diferentes fabricantes de dispositivos (OEMs). Para garantir que o app ofereça uma experiência consistente e confiável em todos os dispositivos, os desenvolvedores precisam projetar o processamento de perda de vínculo para se adaptar a essas variações.
Recomendamos os seguintes comportamentos do app:
Se a intent
ACTION_KEY_MISSINGfor transmitida:O link ACL (Asynchronous Connection-Less) será desconectado pelo sistema, mas as informações de vinculação do dispositivo serão mantidas, conforme descrito aqui.
Seu app precisa usar essa intent como o indicador principal para a detecção de perda de conexão e orientar o usuário a confirmar se o dispositivo remoto está no alcance antes de iniciar o esquecimento ou o novo pareamento do dispositivo.
Se um dispositivo se desconectar depois que o
ACTION_KEY_MISSINGfor recebido, o app precisará ter cuidado ao se reconectar, porque o dispositivo pode não estar mais vinculado ao sistema.Se a intent
ACTION_KEY_MISSINGNÃO for transmitida:O link ACL vai permanecer conectado, e as informações de vinculação do dispositivo serão removidas pelo sistema, assim como no comportamento do Android 15.
Nesse cenário, o app precisa continuar com os mecanismos de processamento de perda de vínculo existentes, como nas versões anteriores do Android, para detectar e gerenciar eventos de perda de vínculo.
Nova maneira de remover a conexão Bluetooth
Todos os apps destinados ao Android 16 agora podem desvincular dispositivos Bluetooth usando uma
API pública em CompanionDeviceManager. Se um dispositivo complementar estiver
sendo gerenciado como uma associação de CDM, o app poderá acionar
a remoção de pareamento Bluetooth usando a nova API removeBond(int)
no dispositivo associado. O app pode monitorar as mudanças de estado de vinculação
ouvindo o evento de transmissão do dispositivo Bluetooth
ACTION_BOND_STATE_CHANGED.
Segurança
O Android 16 (nível 36 da API) inclui as seguintes mudanças de segurança.
Bloqueio de versão do MediaStore
Para apps destinados ao Android 16 ou mais recente, o MediaStore#getVersion() agora
será exclusivo para cada app. Isso elimina as propriedades de identificação da string
de versão para evitar abuso e uso para técnicas de impressão digital. Os apps não podem
fazer suposições sobre o formato dessa versão. Os apps já precisam
processar mudanças de versão ao usar essa API e, na maioria dos casos, não precisam
mudar o comportamento atual, a menos que o desenvolvedor tenha tentado inferir
informações adicionais que estão além do escopo pretendido dessa API.
Intents mais seguras
更安全的 intent 功能是一项多阶段安全计划,旨在提高 Android intent 解析机制的安全性。其目标是在 intent 处理期间添加检查并过滤不符合特定条件的 intent,从而保护应用免受恶意操作的影响。
在 Android 15 中,该功能侧重于发送应用。现在,在 Android 16 中,控制权转移到了接收应用,开发者可以使用其应用清单选择启用严格 intent 解析。
我们将实施两项关键变更:
显式 intent 必须与目标组件的 intent 过滤器相匹配:如果 intent 显式定位到某个组件,则应与该组件的 intent 过滤器相匹配。
不含操作的 intent 无法匹配任何 intent 过滤器:未指定操作的 intent 不应解析为任何 intent 过滤器。
这些变更仅在涉及多个应用时适用,不会影响单个应用内的 intent 处理。
影响
由于该功能具有选择启用性质,因此开发者必须在其应用清单中明确启用该功能,它才能生效。 因此,该功能的影响范围仅限于满足以下条件的应用:
- 了解 Safer Intents 功能及其优势。
- 主动选择在应用中采用更严格的 intent 处理做法。
这种选择性启用的方法可最大限度地降低破坏现有应用的风险,这些应用可能依赖于当前安全性较低的 intent 解析行为。
虽然 Android 16 中的初始影响可能有限,但 Safer Intents 计划已制定路线图,将在未来的 Android 版本中产生更广泛的影响。 我们计划最终将严格 intent 解析设为默认行为。
Safer Intents 功能可以提高恶意应用利用 intent 解析机制中的漏洞的难度,从而显著增强 Android 生态系统的安全性。
不过,必须谨慎管理向停用和强制执行的过渡,以解决与现有应用的潜在兼容性问题。
实现
开发者需要在其应用清单中使用 intentMatchingFlags 属性明确启用更严格的 intent 匹配。以下示例展示了如何为整个应用选择启用该功能,但为某个接收器停用/选择退出该功能:
<application android:intentMatchingFlags="enforceIntentFilter">
<receiver android:name=".MyBroadcastReceiver" android:exported="true" android:intentMatchingFlags="none">
<intent-filter>
<action android:name="com.example.MY_CUSTOM_ACTION" />
</intent-filter>
<intent-filter>
<action android:name="com.example.MY_ANOTHER_CUSTOM_ACTION" />
</intent-filter>
</receiver>
</application>
详细了解支持的标志:
| 标志名称 | 说明 |
|---|---|
| enforceIntentFilter | 对传入 intent 强制执行更严格的匹配 |
| 无 | 停用传入 intent 的所有特殊匹配规则。指定多个标志时,如果值存在冲突,则优先采用“none”标志 |
| allowNullAction | 放宽匹配规则,允许不含操作的 intent 进行匹配。此标志将与“enforceIntentFilter”结合使用,以实现特定行为 |
测试和调试
强制执行生效后,如果 intent 调用方已正确填充 intent,应用应能正常运行。
不过,被屏蔽的 intent 会触发警告日志消息,例如带有 "PackageManager." 标记的 "Intent does not match component's intent filter:" 和 "Access blocked:"。这表示存在可能影响应用的潜在问题,需要引起注意。
Logcat 过滤条件:
tag=:PackageManager & (message:"Intent does not match component's intent filter:" | message: "Access blocked:")
Filtragem de syscall da GPU
为了强化 Mali GPU 表面,已废弃或仅用于 GPU 开发的 Mali GPU IOCTL 已在正式版 build 中被屏蔽。此外,用于 GPU 性能分析的 IOCTL 已限制为 shell 进程或可调试应用。如需详细了解平台级政策,请参阅 SAC 更新。
此变更适用于使用 Mali GPU 的 Pixel 设备(Pixel 6-9)。Arm 在其 r54p2 版本的 Documentation/ioctl-categories.rst 中提供了其 IOCTL 的官方分类。此列表将在未来的驱动程序版本中继续维护。
此项变更不会影响受支持的图形 API(包括 Vulkan 和 OpenGL),预计也不会影响开发者或现有应用。 GPU 性能分析工具(例如 Streamline Performance Analyzer 和 Android GPU 检查器)不会受到影响。
测试
如果您看到类似以下内容的 SELinux 拒绝,则您的应用可能已受到此变更的影响:
06-30 10:47:18.617 20360 20360 W roidJUnitRunner: type=1400 audit(0.0:85): avc: denied { ioctl }
for path="/dev/mali0" dev="tmpfs" ino=1188 ioctlcmd=0x8023
scontext=u:r:untrusted_app_25:s0:c512,c768 tcontext=u:object_r:gpu_device:s0 tclass=chr_file
permissive=0 app=com.google.android.selinux.pts
如果您的应用需要使用被屏蔽的 IOCTL,请提交 bug 并将其分配给 android-partner-security@google.com。
常见问题解答
此政策变更是否适用于所有 OEM? 此项变更将采用选择启用的方式,但任何想要使用此加固方法的 OEM 都可以使用。如需了解如何实现此变更,请参阅实现文档。
是否必须在 OEM 代码库中进行更改才能实现此功能,还是说新的 AOSP 版本默认提供此功能? 默认情况下,平台级变更将随新的 AOSP 版本一起发布。如果供应商希望应用此更改,可以在其代码库中选择启用此更改。
SoC 是否负责确保 IOCTL 列表保持最新状态?例如,如果我的设备使用 ARM Mali GPU,我是否需要就任何更改与 ARM 联系? 各个 SoC 必须在驱动程序发布时更新其每个设备的 IOCTL 列表。 例如,ARM 会在驱动程序更新时更新其发布的 IOCTL 列表。 不过,OEM 应确保将这些更新纳入其 SEPolicy 中,并根据需要将任何选定的自定义 IOCTL 添加到列表中。
此变更会自动应用于所有在售 Pixel 设备,还是需要用户执行操作来切换某些设置才能应用此变更? 此变更适用于所有使用 Mali GPU 的 Pixel 在售设备(Pixel 6-9)。用户无需采取任何行动即可应用此变更。
使用此政策是否会影响内核驱动程序的性能? 此政策已在 Mali GPU 上使用 GFXBench 进行了测试,未观察到 GPU 性能发生可测量的变化。
IOCTL 列表是否必须与当前用户空间和内核驱动程序版本保持一致? 是的,允许的 IOCTL 列表必须与用户空间和内核驱动程序支持的 IOCTL 同步。如果用户空间或内核驱动程序中的 IOCTL 发生更新,则 SEPolicy IOCTL 列表也必须进行更新以保持一致。
ARM 已将 IOCTL 分类为“受限”/“插桩”,但我们希望在生产用例中使用其中一些 IOCTL,和/或拒绝其他 IOCTL。 各个 OEM/SoC 负责根据其用户空间 Mali 库的配置,决定如何对所使用的 IOCTL 进行分类。 ARM 的列表可用于帮助确定这些设置,但每个 OEM/SoC 的用例可能有所不同。
Privacidade
O Android 16 (nível 36 da API) inclui as mudanças de privacidade a seguir.
Permissão de rede local
Os dispositivos na LAN podem ser acessados por qualquer app que tenha a permissão INTERNET.
Isso facilita a conexão de apps a dispositivos locais, mas também tem implicações de privacidade, como a formação de uma impressão digital do usuário e a atuação como proxy de localização.
O projeto de proteções de rede local tem como objetivo proteger a privacidade do usuário, restringindo o acesso à rede local com uma nova permissão de execução.
Plano de lançamento
Essa mudança será implantada entre duas versões, 25Q2 e 26Q2, respectivamente. É fundamental que os desenvolvedores sigam essas orientações para o 25Q2 e compartilhem feedback, porque essas proteções serão aplicadas em uma versão posterior do Android. Além disso, eles precisarão atualizar os cenários que dependem do acesso implícito à rede local usando as orientações a seguir e se preparar para a rejeição e revogação da nova permissão pelo usuário.
Impacto
No estágio atual, a LNP é um recurso opcional, o que significa que apenas os apps que ativarem essa opção serão afetados. O objetivo da fase de ativação é que os desenvolvedores de apps entendam quais partes do app dependem do acesso implícito à rede local para que possam se preparar para protegê-las com permissões na próxima versão.
Os apps serão afetados se acessarem a rede local do usuário usando:
- Uso direto ou de biblioteca de soquetes brutos em endereços de rede local (por exemplo, protocolo de descoberta de serviços mDNS ou SSDP)
- Uso de classes no nível do framework que acessam a rede local (por exemplo, NsdManager)
O tráfego para e de um endereço de rede local requer permissão de acesso à rede local. A tabela a seguir lista alguns casos comuns:
| Operação de rede de baixo nível do app | Permissão de rede local necessária |
|---|---|
| Como fazer uma conexão TCP de saída | sim |
| Como aceitar conexões TCP de entrada | sim |
| Como enviar um unicast, multicast ou broadcast UDP | sim |
| Receber um unicast, multicast ou broadcast UDP de entrada | sim |
Essas restrições são implementadas na pilha de rede e, portanto, se aplicam a todas as APIs de rede. Isso inclui soquetes criados em código nativo ou gerenciado, bibliotecas de rede como Cronet e OkHttp e todas as APIs implementadas com base nelas. A tentativa de resolver serviços na rede local (ou seja, aqueles com um sufixo .local) vai exigir permissão de rede local.
Exceções às regras acima:
- Se o servidor DNS de um dispositivo estiver em uma rede local, o tráfego de entrada ou saída (na porta 53) não vai exigir permissão de acesso à rede local.
- Os aplicativos que usam o seletor de saída como seletor no app não vão precisar de permissões de rede local (mais orientações serão fornecidas no quarto trimestre de 2025).
Orientação para desenvolvedores (ativação)
Para ativar as restrições de rede local, faça o seguinte:
- Atualize o dispositivo para uma versão com o Beta 3 do 25Q2 ou mais recente.
- Instale o app que será testado.
Ative a flag do Appcompat no adb:
adb shell am compat enable RESTRICT_LOCAL_NETWORK <package_name>Reinicie o dispositivo
Agora, o acesso do app à rede local está restrito, e qualquer tentativa de acessar a rede local vai resultar em erros de soquete. Se você estiver usando APIs que realizam operações de rede local fora do processo do app (por exemplo, NsdManager), elas não serão afetadas durante a fase de ativação.
Para restaurar o acesso, conceda ao app permissão para NEARBY_WIFI_DEVICES.
- Verifique se o app declara a permissão
NEARBY_WIFI_DEVICESno manifesto. - Acesse Configurações > Apps > [Nome do aplicativo] > Permissões > Dispositivos por perto > Permitir.
Agora, o acesso do app à rede local será restaurado, e todos os cenários vão funcionar como antes da ativação.
Quando a aplicação da proteção de rede local começar, o tráfego de rede do app será afetado da seguinte forma.
| Permissão | Solicitação de LAN de saída | Solicitação de saída/entrada da Internet | Solicitação de LAN de entrada |
|---|---|---|---|
| Concedido | funciona | funciona | funciona |
| Não concedido | Falhas | funciona | Falhas |
Use o comando a seguir para desativar a flag de compatibilidade de apps:
adb shell am compat disable RESTRICT_LOCAL_NETWORK <package_name>
Erros
Os erros decorrentes dessas restrições serão retornados ao soquete de chamada sempre que ele invocar o envio ou uma variante de envio para um endereço de rede local.
Exemplo de erros:
sendto failed: EPERM (Operation not permitted)
sendto failed: ECONNABORTED (Operation not permitted)
Definição de rede local
Uma rede local neste projeto se refere a uma rede IP que usa uma interface de rede com capacidade de transmissão, como Wi-Fi ou Ethernet, mas exclui conexões de celular (WWAN) ou conexão VPN.
As seguintes redes são consideradas locais:
IPv4:
- 169.254.0.0/16 // Link Local
- 100.64.0.0/10 // CGNAT
- 10.0.0.0/8 // RFC1918
- 172.16.0.0/12 // RFC1918
- 192.168.0.0/16 // RFC1918
IPv6:
- Link-local
- Rotas conectadas diretamente
- Redes stub, como Thread
- Várias sub-redes (a definir)
Além disso, os endereços multicast (224.0.0.0/4, ff00::/8) e o endereço de transmissão IPv4 (255.255.255.255) são classificados como endereços de rede local.
Fotos do app
Quando um app destinado ao SDK 36 ou mais recente solicitar permissões de fotos e vídeos em dispositivos com o Android 16 ou versões mais recentes, os usuários que optarem por limitar o acesso à mídia selecionada vão encontrar as fotos pertencentes ao app pré-selecionadas no seletor de fotos. Os usuários podem desmarcar qualquer um desses itens pré-selecionados, o que revoga o acesso do app a essas fotos e vídeos.