Al igual que las versiones anteriores, Android 16 incluye cambios de comportamiento que podrían afectar tu app. Los siguientes cambios se aplican exclusivamente a las apps que tienen como objetivo Android 16 o versiones posteriores. Si tu app está orientada a Android 16 o versiones posteriores, debes modificarla para que admita estos comportamientos, 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 16, independientemente de targetSdkVersion
de tu app.
Experiencia del usuario y la IU del sistema
Android 16 (nivel de API 36) incluye los siguientes cambios que tienen como objetivo crear una experiencia del usuario más coherente e intuitiva.
Desaparecerá la opción de inhabilitar el formato de borde a borde
Android 15 enforced edge-to-edge for apps targeting Android 15 (API
level 35), but your app could opt-out by setting
R.attr#windowOptOutEdgeToEdgeEnforcement
to true
. For apps
targeting Android 16 (API level 36),
R.attr#windowOptOutEdgeToEdgeEnforcement
is deprecated and disabled, and your
app can't opt-out of going edge-to-edge.
- If your app targets Android 16 (API level 36) and is running on an
Android 15 device,
R.attr#windowOptOutEdgeToEdgeEnforcement
continues to work. - If your app targets Android 16 (API level 36) and is running on an
Android 16 device,
R.attr#windowOptOutEdgeToEdgeEnforcement
is disabled.
For testing in Android 16, ensure your app supports edge-to-edge and
remove any use of R.attr#windowOptOutEdgeToEdgeEnforcement
so that your app
also supports edge-to-edge on an Android 15 device. To support edge-to-edge,
see the Compose and Views guidance.
Se requiere la migración o la exclusión para el gesto atrás predictivo
对于以 Android 16(API 级别 36)或更高版本为目标平台且在搭载 Android 16 或更高版本的设备上运行的应用,预测性返回系统动画(返回主屏幕、跨任务和跨 activity)默认处于启用状态。此外,系统不再调用 onBackPressed
,也不再调度 KeyEvent.KEYCODE_BACK
。
如果您的应用会拦截返回事件,但您尚未迁移到预测性返回,请更新应用以使用受支持的返回导航 API,或者暂时选择停用,方法是在应用的 AndroidManifest.xml
文件的 <application>
或 <activity>
标记中将 android:enableOnBackInvokedCallback
属性设置为 false
。
Las APIs de fuentes elegantes dejaron de estar disponibles y se inhabilitaron
Apps targeting Android 15 (API level 35) have the
elegantTextHeight
TextView
attribute set to true
by
default, replacing the compact font with one that is much more readable. You
could override this by setting the elegantTextHeight
attribute to false
.
Android 16 deprecates the
elegantTextHeight
attribute,
and the attribute will be ignored once your app targets Android 16. The "UI
fonts" controlled by these APIs are being discontinued, so you should adapt any
layouts to ensure consistent and future proof text rendering in Arabic, Lao,
Myanmar, Tamil, Gujarati, Kannada, Malayalam, Odia, Telugu or Thai.

elegantTextHeight
behavior for apps targeting Android
14 (API level 34) and lower, or for apps targeting Android 15 (API level 35)
that overrode the default by setting the elegantTextHeight
attribute to false
.
elegantTextHeight
behavior for apps targeting Android
16 (API level 36), or for apps targeting Android 15 (API level 35) that didn't
override the default by setting the elegantTextHeight
attribute
to false
.Funcionalidad principal
Android 16 (nivel de API 36) incluye los siguientes cambios que modifican o expanden varias capacidades principales del sistema Android.
Optimización de la programación de trabajo con tarifa fija
在以 Android 16 为目标平台之前,如果 scheduleAtFixedRate
因不在有效的进程生命周期内而错过了任务执行,则当应用返回到有效的生命周期时,所有错过的执行会立即执行。
以 Android 16 为目标平台时,当应用返回到有效的生命周期时,系统会立即执行最多 1 次未执行的 scheduleAtFixedRate
执行。此行为变更预计会提升应用性能。在您的应用中测试此行为,检查您的应用是否受到影响。您还可以使用应用兼容性框架并启用 STPE_SKIP_MULTIPLE_MISSED_PERIODIC_TASKS
兼容性标志进行测试。
Factores de forma del dispositivo
Android 16 (nivel de API 36) incluye los siguientes cambios para las apps cuando se muestran en dispositivos de pantalla grande.
Diseños adaptables
现在,Android 应用可在各种设备(例如手机、平板电脑、可折叠设备、桌面设备、汽车和电视)上运行,并且在大屏设备上支持多种窗口模式(例如分屏和桌面窗口),因此开发者应构建能够适应任何屏幕和窗口尺寸的 Android 应用,无论设备方向如何。在当今多设备的世界中,限制屏幕方向和尺寸可调整性等范式过于严格。
忽略屏幕方向、尺寸可调整性和宽高比限制
对于以 Android 16(API 级别 36)为目标平台的应用,Android 16 包含对系统管理屏幕方向、尺寸调整能力和宽高比限制的方式的变更。在最小宽度大于或等于 600dp 的显示屏上,这些限制不再适用。应用还会填满整个显示窗口,无论宽高比或用户偏好的屏幕方向如何,都不会使用竖条模式。
此变更引入了新的标准平台行为。Android 正在向一种模型转变,在该模型中,应用需要适应各种屏幕方向、显示大小和宽高比。固定屏幕方向或有限的尺寸可调整性等限制会阻碍应用的适应性,因此我们建议让应用具备自适应能力,以提供尽可能出色的用户体验。
您还可以使用应用兼容性框架并启用 UNIVERSAL_RESIZABLE_BY_DEFAULT
兼容性标志来测试此行为。
常见的重大更改
忽略屏幕方向、可调整大小性和宽高比限制可能会影响应用在某些设备上的界面,尤其是那些专为锁定为纵向的小布局设计的元素,例如布局拉伸、动画和组件超出屏幕等问题。任何关于宽高比或屏幕方向的假设都可能导致应用出现视觉问题。详细了解如何避免这些问题并改进应用的自适应行为。
允许设备旋转会导致更多 activity 重新创建,如果未正确保留,可能会导致用户状态丢失。如需了解如何正确保存界面状态,请参阅保存界面状态。
实现细节
在全屏模式和多窗口模式下,以下清单属性和运行时 API 会被大屏设备忽略:
screenOrientation
resizableActivity
minAspectRatio
maxAspectRatio
setRequestedOrientation()
getRequestedOrientation()
系统会忽略 screenOrientation
、setRequestedOrientation()
和 getRequestedOrientation()
的以下值:
portrait
reversePortrait
sensorPortrait
userPortrait
landscape
reverseLandscape
sensorLandscape
userLandscape
对于显示屏可调整大小性,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>
Salud y fitness
Android 16 (nivel de API 36) incluye los siguientes cambios relacionados con los datos de actividad física y salud.
Permisos de salud y estado físico
对于以 Android 16(API 级别 36)或更高版本为目标平台的应用,BODY_SENSORS
权限使用 android.permissions.health
下更精细的权限,健康数据共享也使用这些权限。自 Android 16 起,凡是以前需要 BODY_SENSORS
或 BODY_SENSORS_BACKGROUND
的 API,现在都需要获取相应的 android.permissions.health
权限。这会影响以下数据类型、API 和前台服务类型:
HEART_RATE_BPM
来自 Wear OS 健康服务- 来自 Android 传感器管理器的
Sensor.TYPE_HEART_RATE
- 在 Wear OS 上,
ProtoLayout
中的heartRateAccuracy
和heartRateBpm
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
。
这些权限与用于保护对 Health Connect(Android 健康、健身和身心状态数据存储区)中数据的读取访问权限相同。
移动应用
迁移到使用 READ_HEART_RATE
和其他精细权限的移动应用还必须声明 activity 以显示应用的隐私权政策。此要求与健康数据共享的要求相同。
Conectividad
Android 16 (nivel de API 36) incluye los siguientes cambios en la pila de Bluetooth para mejorar la conectividad con dispositivos periféricos.
Nuevos intents para controlar la pérdida de vinculación y los cambios en la encriptación
As part of the Improved bond loss handling, Android 16 also introduces 2 new intents to provide apps with greater awareness of bond loss and encryption changes.
Apps targeting Android 16 can now:
- Receive an
ACTION_KEY_MISSING
intent when remote bond loss is detected, allowing them to provide more informative user feedback and take appropriate actions. - Receive an
ACTION_ENCRYPTION_CHANGE
intent whenever encryption status of the link changes. This includes encryption status change, encryption algorithm change, and encryption key size change. Apps must consider the bond restored if the link is successfully encrypted upon receivingACTION_ENCRYPTION_CHANGE
intent later.
Adapting to varying OEM implementations
While Android 16 introduces these new intents, their implementation and broadcasting can vary across different device manufacturers (OEMs). To ensure your app provides a consistent and reliable experience across all devices, developers should design their bond loss handling to gracefully adapt to these potential variations.
We recommend the following app behaviors:
If the
ACTION_KEY_MISSING
intent is broadcast:The ACL (Asynchronous Connection-Less) link will be disconnected by the system, but the bond information for the device will be retained (as described here).
Your app should use this intent as the primary signal for bond loss detection and guiding the user to confirm the remote device is in range before initiating device forgetting or re-pairing.
If a device disconnects after
ACTION_KEY_MISSING
is received, your app should be cautious about reconnecting, as the device may no longer be bonded with the system.If the
ACTION_KEY_MISSING
intent is NOT broadcast:The ACL link will remain connected, and the bond information for the device will be removed by the system, same to behavior in Android 15.
In this scenario, your app should continue its existing bond loss handling mechanisms as in previous Android releases, to detect and manage bond loss events.
Nueva forma de quitar la vinculación de Bluetooth
All apps targeting Android 16 are now able to unpair bluetooth devices using a
public API in CompanionDeviceManager
. If a companion device is
being managed as a CDM association, then the app can trigger
bluetooth bond removal by using the new removeBond(int)
API
on the associated device. The app can monitor the bond state changes by
listening to the bluetooth device broadcast event
ACTION_BOND_STATE_CHANGED
.
Seguridad
Android 16 (nivel de API 36) incluye los siguientes cambios de seguridad.
Bloqueo de la versión de MediaStore
对于以 Android 16 或更高版本为目标平台的应用,MediaStore#getVersion()
现在将是每个应用的唯一标识。这会从版本字符串中移除标识属性,以防止滥用和用于指纹识别技术。应用不应对此版本的格式做出任何假设。在使用此 API 时,应用应已处理版本变更,并且在大多数情况下无需更改其当前行为,除非开发者尝试推断超出此 API 预期范围的其他信息。
Intents más seguros
La función Safer Intents es una iniciativa de seguridad de varias fases diseñada para mejorar la seguridad del mecanismo de resolución de intents de Android. El objetivo es proteger las apps de acciones maliciosas agregando verificaciones durante el procesamiento de intents y filtrando los intents que no cumplen con criterios específicos.
En Android 15, la función se enfocó en la app de envío. Ahora, con Android 16, el control se traslada a la app de recepción, lo que permite que los desarrolladores habiliten la resolución estricta de intents con el manifiesto de su app.
Se implementarán dos cambios clave:
Los intents explícitos deben coincidir con el filtro de intents del componente de destino: Si un intent segmenta explícitamente un componente, debe coincidir con el filtro de intents de ese componente.
Los intents sin una acción no pueden coincidir con ningún filtro de intents: Los intents que no tienen una acción especificada no deben resolverse en ningún filtro de intents.
Estos cambios solo se aplican cuando hay varias apps involucradas y no afectan el control de intents dentro de una sola app.
Impacto
La naturaleza de habilitación significa que los desarrolladores deben habilitarlo explícitamente en el manifiesto de su app para que surta efecto. Como resultado, el impacto de la función se limitará a las apps cuyos desarrolladores cumplan con los siguientes requisitos:
- Conocer la función Safer Intents y sus beneficios
- Elegir de forma activa incorporar prácticas más estrictas de control de intents en sus apps
Este enfoque de aceptación minimiza el riesgo de interrumpir las apps existentes que pueden depender del comportamiento actual de resolución de intents menos seguro.
Si bien el impacto inicial en Android 16 puede ser limitado, la iniciativa Safer Intents tiene una hoja de ruta para lograr un impacto más amplio en futuras versiones de Android. El plan es, eventualmente, hacer que la resolución estricta de la intención sea el comportamiento predeterminado.
La función Safer Intents tiene el potencial de mejorar significativamente la seguridad del ecosistema de Android, ya que dificulta que las apps maliciosas exploten vulnerabilidades en el mecanismo de resolución de intents.
Sin embargo, la transición a la exclusión voluntaria y la aplicación obligatoria deben administrarse con cuidado para abordar posibles problemas de compatibilidad con las apps existentes.
Implementación
Los desarrolladores deben habilitar explícitamente la coincidencia de intents más estricta con el atributo intentMatchingFlags
en el manifiesto de su app.
Este es un ejemplo en el que la función es opcional para toda la app, pero está inhabilitada o rechazada en un receptor:
<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>
Más información sobre las marcas compatibles:
Nombre de la marca | Descripción |
---|---|
enforceIntentFilter | Aplica una coincidencia más estricta para los intents entrantes |
ninguno | Inhabilita todas las reglas especiales de coincidencia para las intents entrantes. Cuando se especifican varias marcas, los valores en conflicto se resuelven dándole prioridad a la marca "none". |
allowNullAction | Relaja las reglas de coincidencia para permitir que coincidan las intenciones sin una acción. Esta marca se debe usar junto con "enforceIntentFilter" para lograr un comportamiento específico. |
Pruebas y depuración
Cuando la aplicación de la política esté activa, las apps deberían funcionar correctamente si el llamador del intent completó el intent de forma adecuada.
Sin embargo, las intents bloqueadas activarán mensajes de registro de advertencia, como "Intent does not match component's intent filter:"
y "Access blocked:"
, con la etiqueta "PackageManager."
. Esto indica un posible problema que podría afectar la app y requiere atención.
Filtro de Logcat:
tag=:PackageManager & (message:"Intent does not match component's intent filter:" | message: "Access blocked:")
Filtrado de llamadas al sistema de la GPU
Para proteger la superficie de la GPU Mali, se bloquearon en las compilaciones de producción los IOCTL de la GPU Mali que se dejaron de usar o que están destinados únicamente al desarrollo de la GPU. Además, los IOCTL que se usan para la generación de perfiles de la GPU se restringieron al proceso de shell o a las aplicaciones depurables. Consulta la actualización del SAC para obtener más detalles sobre la política a nivel de la plataforma.
Este cambio se aplica a los dispositivos Pixel que usan la GPU Mali (Pixel 6 a 9). Arm proporcionó la categorización oficial de sus IOCTL en Documentation/ioctl-categories.rst
de su versión r54p2. Esta lista se seguirá manteniendo en futuras versiones de controladores.
Este cambio no afecta a las APIs de gráficos compatibles (incluidas Vulkan y OpenGL), y no se espera que afecte a los desarrolladores ni a las aplicaciones existentes. Las herramientas de generación de perfiles de GPU, como Streamline Performance Analyzer y Android GPU Inspector, no se verán afectadas.
Prueba
Si ves una denegación de SELinux similar a la siguiente, es probable que este cambio haya afectado tu aplicación:
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
Si tu aplicación necesita usar IOCTL bloqueados, informa un error y asígnale la dirección android-partner-security@google.com.
Preguntas frecuentes
¿Este cambio en la política se aplica a todos los OEM? Este cambio será opcional, pero estará disponible para todos los OEM que deseen usar este método de refuerzo. Puedes encontrar las instrucciones para implementar el cambio en la documentación de implementación.
¿Es obligatorio realizar cambios en la base de código del OEM para implementar esto, o viene con una nueva versión del AOSP de forma predeterminada? El cambio a nivel de la plataforma se incluirá de forma predeterminada en una nueva versión de AOSP. Los proveedores pueden habilitar este cambio en su base de código si desean aplicarlo.
¿Los SoC son responsables de mantener actualizada la lista de IOCTL? Por ejemplo, si mi dispositivo usa una GPU ARM Mali, ¿debería comunicarme con ARM para realizar alguno de los cambios? Los SoCs individuales deben actualizar sus listas de IOCTL por dispositivo cuando se lanza el controlador. Por ejemplo, ARM actualizará su lista de IOCTL publicadas cuando se actualicen los controladores. Sin embargo, los OEM deben asegurarse de incorporar las actualizaciones en su SEPolicy y agregar los IOCTL personalizados seleccionados a las listas según sea necesario.
¿Este cambio se aplica automáticamente a todos los dispositivos Pixel disponibles en el mercado o se requiere una acción del usuario para activar algún parámetro y aplicar este cambio? Este cambio se aplica a todos los dispositivos Pixel disponibles en el mercado que usan la GPU Mali (Pixel 6 a 9). No se requiere ninguna acción del usuario para aplicar este cambio.
¿El uso de esta política afectará el rendimiento del controlador del kernel? Esta política se probó en la GPU Mali con GFXBench, y no se observó ningún cambio medible en el rendimiento de la GPU.
¿Es necesario que la lista de IOCTL coincida con las versiones actuales del controlador del kernel y del espacio del usuario? Sí, la lista de IOCTL permitidas debe sincronizarse con las IOCTL admitidas por los controladores del espacio del usuario y del kernel. Si se actualizan los IOCTL en el espacio del usuario o en el controlador del kernel, se debe actualizar la lista de IOCTL de SEPolicy para que coincida.
ARM clasificó los IOCTL como "restringidos" o "de instrumentación", pero queremos usar algunos de ellos en casos de uso de producción o rechazar otros. Los OEM y los SoC individuales son responsables de decidir cómo categorizar los IOCTL que usan, según la configuración de sus bibliotecas de Mali del espacio del usuario. La lista de ARM puede ayudar a decidir sobre estos, pero el caso de uso de cada OEM o SoC puede ser diferente.
Privacidad
Android 16 (nivel de API 36) incluye los siguientes cambios relacionados con la privacidad.
Permiso de red local
Devices on the LAN can be accessed by any app that has the INTERNET
permission.
This makes it easy for apps to connect to local devices but it also has privacy
implications such as forming a fingerprint of the user, and being a proxy for
location.
The Local Network Protections project aims to protect the user's privacy by gating access to the local network behind a new runtime permission.
Release plan
This change will be deployed between two releases, 25Q2 and TBD respectively. It is imperative that developers follow this guidance for 25Q2 and share feedback because these protections will be enforced at a later Android release. Moreover, they will need to update scenarios which depend on implicit local network access by using the following guidance and prepare for user rejection and revocation of the new permission.
Impact
At the current stage, LNP is an opt-in feature which means only the apps that opt in will be affected. The goal of the opt-in phase is for app developers to understand which parts of their app depend on implicit local network access such that they can prepare to permission guard them for the next release.
Apps will be affected if they access the user's local network using:
- Direct or library use of raw sockets on local network addresses (e.g. mDNS or SSDP service discovery protocol)
- Use of framework level classes that access the local network (e.g. NsdManager)
Traffic to and from a local network address requires local network access permission. The following table lists some common cases:
App Low Level Network Operation | Local Network Permission Required |
---|---|
Making an outgoing TCP connection | yes |
Accepting incoming TCP connections | yes |
Sending a UDP unicast, multicast, broadcast | yes |
Receiving an incoming UDP unicast, multicast, broadcast | yes |
These restrictions are implemented deep in the networking stack, and thus they apply to all networking APIs. This includes sockets created in native or managed code, networking libraries like Cronet and OkHttp, and any APIs implemented on top of those. Trying to resolve services on the local network (i.e. those with a .local suffix) will require local network permission.
Exceptions to the rules above:
- If a device's DNS server is on a local network, traffic to or from it (at port 53) doesn't require local network access permission.
- Applications using Output Switcher as their in-app picker won't need local network permissions (more guidance to come in 2025Q4).
Developer Guidance (Opt-in)
To opt into local network restrictions, do the following:
- Flash the device to a build with 25Q2 Beta 3 or later.
- Install the app to be tested.
Toggle the Appcompat flag in adb:
adb shell am compat enable RESTRICT_LOCAL_NETWORK <package_name>
Reboot The device
Now your app's access to the local network is restricted and any attempt to access the local network will lead to socket errors. If you are using APIs that perform local network operations outside of your app process (ex: NsdManager), they won't be impacted during the opt-in phase.
To restore access, you must grant your app permission to NEARBY_WIFI_DEVICES
.
- Ensure the app declares the
NEARBY_WIFI_DEVICES
permission in its manifest. - Go to Settings > Apps > [Application Name] > Permissions > Nearby devices > Allow.
Now your app's access to the local network should be restored and all your scenarios should work as they did prior to opting the app in.
Once enforcement for local network protection begins, here is how the app network traffic will be impacted.
Permission | Outbound LAN Request | Outbound/Inbound Internet Request | Inbound LAN Request |
---|---|---|---|
Granted | Works | Works | Works |
Not Granted | Fails | Works | Fails |
Use the following command to toggle-off the App-Compat flag
adb shell am compat disable RESTRICT_LOCAL_NETWORK <package_name>
Errors
Errors arising from these restrictions will be returned to the calling socket whenever it invokes send or a send variant to a local network address.
Example errors:
sendto failed: EPERM (Operation not permitted)
sendto failed: ECONNABORTED (Operation not permitted)
Local Network Definition
A local network in this project refers to an IP network that utilizes a broadcast-capable network interface, such as Wi-Fi or Ethernet, but excludes cellular (WWAN) or VPN connections.
The following are considered local networks:
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
- Directly-connected routes
- Stub networks like Thread
- Multiple-subnets (TBD)
Additionally, both multicast addresses (224.0.0.0/4, ff00::/8) and the IPv4 broadcast address (255.255.255.255) are classified as local network addresses.
Fotos propiedad de la app
当面向 SDK 36 或更高版本的应用在搭载 Android 16 或更高版本的设备上提示用户授予照片和视频权限时,如果用户选择限制对所选媒体的访问权限,则会在照片选择器中看到该应用拥有的所有照片。用户可以取消选择任何这些预选项,这会撤消该应用对这些照片和视频的访问权限。