Android 10 为用户和开发者引入了强大的功能。本文重点介绍面向开发者的功能。
如需了解这些 API,请参阅 API 差异报告或访问 Android API 参考文档,查找“在 API 级别 29 中添加”的 API。此外,请务必查看 Android 10 行为变更(针对以 API 级别 29 为目标平台的应用和所有应用)以及隐私权变更,了解平台变更可能会在哪些方面影响您的应用。
安全增强功能
Android 10 引入了多项安全功能,以下各部分对这些功能进行了总结。
改进了生物识别验证对话框
Android 10 对生物识别身份验证支持进行了以下改进:
- 检查生物识别验证功能。
- 一种回退机制,允许用户在无法使用生物识别输入进行身份验证时,使用其设备 PIN 码、解锁图案或密码进行身份验证。
- 一种提示,用于告知系统在用户使用隐式生物识别模式进行身份验证后,无需用户确认。例如,您可以告知系统,在用户使用人脸识别身份验证进行身份验证后,无需进一步确认。
直接从 APK 运行嵌入式 DEX 代码
从 Android 10 开始,您可以告知平台直接从应用的 APK 文件运行嵌入式 DEX 代码。如果攻击者曾设法篡改了设备上本地编译的代码,此选项有助于防止这类攻击。
如需了解详情,请参阅直接从 APK 运行嵌入式 DEX 代码。
TLS 1.3 支持
Android 10 增加了对 TLS 1.3 的支持。TLS 1.3 是对 TLS 标准的重大修订,可提升性能并增强安全性。我们的基准测试表明,与 TLS 1.2 相比,使用 TLS 1.3 建立安全连接的速度最多可提高 40%。
如需详细了解我们对 TLS 1.3 的实现,请参阅所有应用的行为变更页面中的 TLS 部分。
公共 Conscrypt API
从 Android 10 开始,Conscrypt 安全提供程序包含一个用于 TLS 功能的公共 API。
android.net.ssl 下的类集合包含用于访问通用 javax.net.ssl API 未提供的功能的静态方法。这些类的名称可以推断为相应 javax.net.ssl 类的复数形式。例如,对 javax.net.ssl.SSLSocket 实例进行操作的代码可以改用 SSLSockets 中的方法。
连接功能
Android 10 包含多项与网络组建和管理和连接性相关的改进。
WLAN 网络连接 API
Android 10 增加了对点对点连接的支持。此功能使您的应用能够提示用户使用 WifiNetworkSpecifier 描述所请求网络的属性,从而更改设备连接到的接入点。点对点连接用于非网络提供目的,例如为 Chromecast 和 Google Home 硬件等辅助设备引导配置。
如需了解详情,请参阅适用于点对点连接的 Wi-Fi 网络请求 API。
WLAN 网络建议 API
Android 10 新增了对应用提示用户连接到 Wi-Fi 接入点的支持。您可以提供有关要连接到哪个网络的建议。平台最终会根据您和其他应用的输入来选择要接受的接入点。
如需详细了解此功能,请参阅 Wi-Fi 建议。
改进了 WLAN 高性能和低延迟模式
Android 10 允许您向底层调制解调器提供提示,以最大限度地缩短延迟时间。
Android 10 扩展了 Wi-Fi lock API,以有效支持高性能模式和低延迟模式。在高性能和低延迟模式下,Wi-Fi 节能功能处于停用状态,并且在低延迟模式下,可能会启用进一步的延迟优化,具体取决于调制解调器支持。
只有当获取锁定的应用在前台运行且屏幕处于开启状态时,系统才会启用低延迟模式。低延迟模式对于实时移动游戏应用尤其有用。
DNS 解析器中的专用查找
Android 10 增加了对专用 DNS 查找的原生支持,同时使用明文查找和“通过 TLS 执行 DNS”模式。以前,平台 DNS 解析器仅支持 A 和 AAAA 记录,这些记录仅允许查找与名称关联的 IP 地址,但不支持任何其他记录类型。DnsResolver API 提供通用的异步解析,使您能够查找 SRV、NAPTR 和其他记录类型。请注意,解析响应由应用负责执行。
对于基于 NDK 的应用,请参阅 android_res_nsend。
Wi-Fi Easy Connect
Android 10 允许您使用 Easy Connect 向对等设备配置 Wi-Fi 凭据,以替代已弃用的 WPS。应用可以使用 ACTION_PROCESS_WIFI_EASY_CONNECT_URI intent 将 Easy Connect 集成到其设置和配置流程中。
如需详细了解此功能,请参阅 Wi-Fi Easy Connect。
Wi-Fi Direct connection API
Android 10 中更新了 WifiP2pConfig 和 WifiP2pManager API 类,以支持使用预定信息快速建立 WLAN 直连连接。此信息通过侧信道(例如蓝牙或 NFC)共享。
以下代码示例展示了如何使用预定信息创建群组:
Kotlin
val manager = getSystemService(Context.WIFI_P2P_SERVICE) as WifiP2pManager val channel = manager.initialize(this, mainLooper, null) // prefer 5G band for this group val config = WifiP2pConfig.Builder() .setNetworkName("networkName") .setPassphrase("passphrase") .enablePersistentMode(false) .setGroupOperatingBand(WifiP2pConfig.GROUP_OWNER_BAND_5GHZ) .build() // create a non-persistent group on 5GHz manager.createGroup(channel, config, null)
Java
WifiP2pManager manager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE); Channel channel = manager.initialize(this, getMainLooper(), null); // prefer 5G band for this group WifiP2pConfig config = new WifiP2pConfig.Builder() .setNetworkName("networkName") .setPassphrase("passphrase") .enablePersistentMode(false) .setGroupOperatingBand(WifiP2pConfig.GROUP_OWNER_BAND_5GHZ) .build(); // create a non-persistent group on 5GHz manager.createGroup(channel, config, null);
如需使用凭证加入群组,请将 manager.createGroup() 替换为以下内容:
Kotlin
manager.connect(channel, config, null)
Java
manager.connect(channel, config, null);
蓝牙 LE 连接导向型频道 (CoC)
Android 10 使您的应用能够使用 BLE CoC 连接在两个 BLE 设备之间传输较大的数据流。此接口对蓝牙和连接性机制进行了抽象化,以简化实现。
电话功能
Android 10 包含一些与电话相关的改进。
通话质量方面的改进
Android 10 增加了在支持该功能的设备上收集正在进行的 IP 多媒体子系统 (IMS) 通话质量信息(包括网络传入和传出质量)的功能。
选接电话和来电显示
Android 10 为您的应用提供了一种方法,可将不在用户通讯簿中的来电标识为潜在骚扰电话,并代表用户静默拒接骚扰电话。这些被屏蔽的来电的相关信息会在通话记录中记录为被屏蔽的来电,以便在用户未接电话时向其提供更高的透明度。使用此 API 后,无需从用户处获取 READ_CALL_LOG 权限即可提供来电过滤和来电显示功能。
Call Redirection Service API
Android 10 更改了来电 intent 的处理方式。NEW_OUTGOING_CALL 广播已弃用,取而代之的是 CallRedirectionService API。CallRedirectionService API 提供了接口,供您修改 Android 平台发出的去电。例如,第三方应用可能会取消通话,并通过 VoIP 重新路由。
在外部存储设备中创建文件的相关改进
除了引入分区存储之外,Android 10 还添加了以下与外部存储空间相关的功能:
- 您可以使用
IS_PENDING标志,让您的应用在将媒体文件写入磁盘时对其进行独占访问。 - 如果您知道应该存储文件的特定位置,可以为系统提供关于新写入文件存储位置的提示。
- 每个外部存储设备都有一个唯一的卷名称。
媒体和图形
Android 10 引入了以下媒体和图形方面的新功能和 API:
共享音频输入
Android 10 新增了允许两个应用同时共享音频输入的功能。 如需了解完整信息,请参阅共享音频输入。
捕获播放的音频
Android 10 允许应用捕获其他应用播放的音频。 如需了解完整信息,请参阅播放捕获。
MediaStyle 通知中的拖动条
从 Android 10 开始,MediaStyle 通知会显示一个拖动条。拖动条会显示 PlaybackState.getPosition() 中的播放进度,在某些情况下,拖动条可用于定位到正在播放的节目中的某个位置。拖动条的外观和行为受以下规则的控制:
- 如果存在有效的
MediaSession且其时长(由MediaMetadata.METADATA_KEY_DURATION指定)大于零,则会显示跳转栏。 这意味着,该进度条不会针对直播和电台广播等不确定时长的视频流显示。 - 如果会话实现
ACTION_SEEK_TO,用户可以拖动进度条来控制播放位置。
原生 MIDI API
借助 Android Native MIDI API (AMidi),应用开发者可以使用 C/C++ 代码发送和接收 MIDI 数据,从而更紧密地与 C/C++ 音频/控制逻辑集成,并最大限度地减少对 JNI 的需求。
有关详情,请参阅 Android Native MIDI API。
MediaCodecInfo 方面的改进
Android 10 向 MediaCodecInfo 添加了方法,可显示有关编解码器的更多信息。
如需了解详情,请参阅媒体编解码器。
Thermal API
设备过热可能会限制 CPU 和/或 GPU,从而可能以意想不到的方式影响应用和游戏。如果应用使用复杂图形、大量计算或持续网络活动,则更有可能遇到问题,并且这些问题可能会因芯片组和核心频率、集成级别以及设备封装和外形规格而异。
在 Android 10 中,应用和游戏可以使用 Thermal API 来监控设备上的变化,并采取相应的措施以降低耗电量,从而恢复正常温度。应用在 PowerManager 中注册监听器,系统通过该监听器报告持续的热状态,包括轻微、中等、严重、紧急、关机。
当设备报告热应力时,应用和游戏可以通过减少持续性活动来帮助降低各种方式的耗电量。例如,在线影音应用可以降低分辨率/比特率或减少网络流量,相机应用可以停用闪光灯或密集型图片增强功能,游戏可以降低帧速率或减少多边形曲面细分,媒体应用可以降低扬声器音量,地图应用可以关闭 GPS。
Thermal API 需要新的设备 HAL 层,目前在搭载 Android 10 的 Pixel 设备上受支持,我们正在与设备制造商合作伙伴合作,尽快为生态系统提供广泛支持。
摄像头和图片
Android 10 引入了以下与摄像头和图片相关的新功能:
单色摄像头支持
Android 9(API 级别 28)首次引入了单色相机功能。 Android 10 对单色摄像头支持进行了多项增强:
- 增加了对 Y8 流格式的支持,以提高内存效率。
- 支持单色原始 DNG 捕获。
- 引入了 MONO 和 NIR CFA 枚举,以区分常规单色摄像头和近红外摄像头。
您可以使用此功能来捕捉原生单色图片。逻辑多摄像头设备可以使用单色摄像头作为物理子摄像头,以获得更好的低光图像质量。
动态深度格式
从 Android 10 开始,相机可以使用名为动态深度格式 (DDF) 的新架构将图片的深度数据存储在单独的文件中。应用可以同时请求 JPG 图片及其深度元数据,并使用这些信息在后期处理中应用所需的任何模糊效果,而无需修改原始图片数据。
如需阅读此格式的规范,请参阅动态深度格式。
高效率图片文件格式
高效图片文件 (HEIF) 格式是一种标准图片和视频格式,与其他文件格式相比,它引入了更高质量的编码和更小的文件大小。
如需详细了解文件格式,请参阅 HEIC。
多摄像头方面的改进
Android 10 改进了将多个摄像头融合到单个逻辑摄像头中的功能,该功能是在 Android 9(API 级别 28)中引入的。Camera2 API 中添加了以下内容:
isSessionConfigurationSupported(SessionConfiguration sessionConfig)- 使您能够查询是否可以使用传递的会话配置来创建相机拍摄会话。LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID- 使您能够确定支持逻辑摄像头设备的活动物理摄像头的 ID。您可以使用返回的 ID 请求逻辑流和物理子摄像头流,以实现更高的能效。
无障碍服务 API
Android 10 引入了以下新的无障碍服务功能和 API:
AccessibilityNodeInfo 输入键标记
从 Android 10 开始,您可以调用 isTextEntryKey() 来确定给定的 AccessibilityNodeInfo 是否表示属于键盘或小键盘的文本输入键。
无障碍对话框语音反馈
当用户需要执行无障碍功能快捷方式以启动无障碍服务时,Android 10 可允许此对话框在服务请求时附带文字转语音提示。
启用手势导航时的无障碍功能快捷方式
在 Android 10 中启用手势导航功能后,无障碍功能按钮将不可见或无法选择。如需访问无障碍服务菜单,用户必须执行以下手势之一:
- 双指向上滑动。
- 双指向上滑动并按住。
物理键盘的无障碍功能快捷方式
在 Android 10 中,用户可以通过物理键盘来触发无障碍功能快捷方式,只需按 Control+Alt+Z 即可。
软键盘控制器增强功能
在 Android 10 中,即使设备检测到已连接硬键盘,无障碍服务也可以请求显示软键盘。 用户可以覆盖此行为。
用户定义的无障碍服务超时
Android 10 引入了 getRecommendedTimeoutMillis() API。此方法支持用户为交互式和非交互式界面元素定义超时。返回值受用户偏好设置和无障碍服务 API 的影响。
自动填充方面的改进
Android 10 包含对自动填充服务的以下改进。
与兼容性相关的自动填充请求
您可以使用 FillRequest.FLAG_COMPATIBILITY_MODE_REQUEST 标志确定是否通过兼容性模式生成了自动填充请求。
同时保存用户名和密码
您可以使用 SaveInfo.FLAG_DELAY_SAVE 标志来支持应用使用多个 activity 显示用户名、密码和其他字段的情况。
用户与保存界面的互动
您可以通过在对话框中设置操作监听器并更改相应密码远程视图的可见性,在保存对话框中显示和隐藏密码字段。
支持更新数据集
自动填充可以更新现有的密码。例如,如果用户已存储密码,并且他们保存了新密码,自动填充功能会提示用户更新现有密码,而不是保存新密码。
字段分类方面的改进
Android 10 包含对 Field Classification API 的以下改进。
UserData.Builder 构造函数
UserData.Builder 构造函数已更改,以便更好地与 Builder 模式保持一致。
允许将一个值映射到多种类别 ID
在 Android 10 中使用 UserData.Builder 时,您现在可以将一个值映射到多种类型的类别 ID。在之前的版本中,如果多次添加某个值,系统会抛出异常。
改进了对信用卡号码的支持
字段分类现在可以将四位数检测为信用卡号的后四位。
支持特定于应用的字段分类
Android 10 添加了 FillResponse.setUserData(),可让您在会话期间设置应用专属的用户数据。这有助于自动填充服务检测具有应用特定内容的字段的类型。
界面和系统控件
Android 10 提供界面方面的以下改进:
支持 JVMTI PopFrame 功能
Android 10 在 Android JVMTI 实现中增加了对 can_pop_frames 功能的支持。调试时,此功能可让您在断点处暂停并调整局部变量、全局变量或函数的实现后,重新运行函数。如需了解详情,请参阅 Oracle 的弹出帧参考页面。
Surface Control API
Android 10 提供了 SurfaceControl API,用于对系统合成器 (SurfaceFlinger) 进行低级别访问。对于大多数用户而言,SurfaceView 是利用合成器的正确方式。SurfaceControl API 在某些情况下非常有用,例如:
- 同步多个表面
- 跨进程的表面嵌入
- 底层生命周期管理
SurfaceControl API 在 SDK 和 NDK 绑定中均可用。NDK 实现包含一个用于与合成器手动交换缓冲区的 API。这为遇到 BufferQueue 限制的用户提供了另一种选择。
WebView 挂起渲染程序检测
Android 10 引入了 WebViewRenderProcessClient 抽象类,应用可以使用该类来检测 WebView 是否已无响应。如需使用此类,请执行以下操作:
- 定义您自己的子类并实现其
onRenderProcessResponsive()和onRenderProcessUnresponsive()方法。 - 将
WebViewRenderProcessClient的实例附加到一个或多个WebView对象。 - 如果
WebView无响应,系统会调用客户端的onRenderProcessUnresponsive()方法,并传递WebView和WebViewRenderProcess。(如果WebView是单进程,则WebViewRenderProcess参数为 null。)您的应用可以采取适当的操作,例如向用户显示一个对话框,询问他们是否要停止渲染进程。
如果 WebView 仍然无响应,系统会定期调用 onRenderProcessUnresponsive()(每 5 秒不超过一次),但不会执行其他操作。如果 WebView 再次变为响应状态,系统只会调用 onRenderProcessResponsive() 一次。
设置面板
Android 10 引入了设置面板,该 API 允许应用在其应用上下文中向用户显示设置。这样,用户就无需进入设置来更改 NFC 或移动流量等设置,以便使用应用。
例如,假设用户在设备处于飞行模式时打开网络浏览器。在 Android 10 之前,应用只能显示一条通用消息,要求用户打开设置以恢复连接。在 Android 10 中,浏览器应用可以显示一个内嵌面板,其中会显示关键连接设置,例如飞行模式、WLAN(包括附近的 WLAN 网络)和移动流量。借助此面板,用户无需离开应用即可恢复连接。
如需显示设置面板,请触发包含以下 Settings.Panel 操作之一的 intent:
Kotlin
val panelIntent = Intent(Settings.Panel.settings_panel_type) startActivityForResult(panelIntent)
Java
Intent panelIntent = new Intent(Settings.Panel.settings_panel_type); startActivityForResult(panelIntent);
settings_panel_type 可以是以下之一:
ACTION_INTERNET_CONNECTIVITY- 显示与互联网连接相关的设置,例如飞行模式、WLAN 和移动流量。
ACTION_WIFI- 显示 Wi-Fi 设置,但不显示其他连接设置。这对于需要 Wi-Fi 连接才能执行大型上传或下载的应用非常有用。
ACTION_NFC- 显示与近距离无线通信 (NFC) 相关的所有设置。
ACTION_VOLUME- 显示所有音频串流的音量设置。
共享功能方面的改进
Android 10 为共享功能提供了多项改进:
Sharing Shortcuts API
Sharing Shortcuts API 取代了直接分享 API。
Sharing Shortcuts API 允许应用提前发布直接分享目标,而不是按需被动检索结果。ShortcutManager 的运作方式如下。
由于这两个 API 类似,我们扩展了 ShortcutInfo API,以便更轻松地使用这两项功能。借助 Sharing Shortcuts API,您可以直接为分享目标分配类别或人员。分享目标会保留在系统中,直到同一应用更新它们或应用被卸载。
旧版 Direct Share 机制仍然有效,但使用该机制的应用的优先级低于使用 Sharing Shortcuts API 的应用。
ShortcutInfo.Builder 添加并增强了方法,以提供有关分享目标的更多信息。
直接分享目标
您可以将动态快捷方式发布为直接共享目标。 请参阅发布直接分享目标。
ShortcutManagerCompat 是一个新的 AndroidX API,可向后兼容旧版 DirectShare API。这是发布分享目标的首选方式。
预览文本
当应用分享文本内容时,可以在 Sharesheet 界面中显示内容的可选预览。
请参阅添加富文本预览
了解详情
如需详细了解应用如何共享数据,请参阅将简单的数据发送到其他应用和从其他应用接收简单的数据
深色主题
Android 10 提供深色主题,该主题适用于 Android 系统界面以及在设备上运行的应用。如需了解完整信息,请参阅深色主题。
前台服务类型
Android 10 引入了 foregroundServiceType XML 清单属性,您可以在多个特定服务的定义中添加该属性。您可以将多个前台服务类型分配给特定服务,但这种情况很少见。
下表显示了不同的前台服务类型以及适合声明特定类型的服务:
| 前台服务类型 | 应声明相应类型的服务的示例使用情形 |
|---|---|
connectedDevice
| 监控穿戴式设备健身跟踪器 |
dataSync
| 从网络下载文件 |
location
| 继续执行用户发起的操作 |
mediaPlayback
| 播放有声读物、播客或音乐 |
mediaProjection
| 简短地录屏 |
phoneCall
| 处理正在进行的通话 |
Kotlin
Android 10 对 Kotlin 开发进行了以下更新。
libcore API 的可空性注释
Android 10 提高了 SDK 中 libcore API 的可为 null 性注解的覆盖率。这些注解使在 Android Studio 中使用 Kotlin 或 Java 可为 null 性分析的应用开发者能够在与这些 API 交互时获取 nullness 信息。
通常,Kotlin 中违反“是否可为 null”协定会导致编译错误。为确保与现有代码兼容,系统只会添加 @RecentlyNullable 和 @RecentlyNonNull 注解。这意味着,可为 null 性违规会导致警告,而不是错误。
此外,在 Android 9 中添加的所有 @RecentlyNullable 或 @RecentlyNonNull 注解都将分别更改为 @Nullable 和 @NonNull。
这意味着,在 Android 10 及更高版本中,可为 null 性违规会导致错误,而不是警告。
如需详细了解注解变更,请参阅 Android 开发者博客上的 Android Pie SDK 现已对 Kotlin 更加友好。
NDK
Android 10 包含 NDK 方面的以下变更。
改进了文件描述符所有权的调试
Android 10 添加了 fdsan,可帮助您更轻松地查找和修复文件描述符所有权问题。
与文件描述符所有权处理不当相关的 bug 往往表现为关闭后使用和重复关闭,类似于内存分配释放后使用和重复释放 bug,但往往更难诊断和修复。fdsan 会尝试通过强制执行文件描述符所有权来检测和/或防止文件描述符管理不当。
如需详细了解与这些问题相关的崩溃,请参阅 fdsan 检测到的错误。 如需详细了解 fdsan,请参阅有关 fdsan 的 Googlesource 页面。
ELF TLS
使用 NDK 构建且最低 API 级别为 29 的应用可以使用 ELF TLS,而不是 emutls。添加了动态和静态链接器支持,以支持这种处理线程局部变量的方法。
对于针对 API 级别 28 及更低级别构建的应用,我们对 libgcc/compiler-rt 进行了改进,以解决一些 emutls 问题。
如需了解详情,请参阅面向 NDK 开发者的 Android 变更。
运行时
Android 10 包含运行时方面的以下变更。
触发基于 Mallinfo 的垃圾回收
当小型平台 Java 对象引用 C++ 堆中的大型对象时,通常只有在 Java 对象被回收并完成终结等操作后,C++ 对象才能被回收。在之前的版本中,平台会估算与 Java 对象关联的许多 C++ 对象的大小。这种估算并不总是准确的,有时会导致内存用量大幅增加,因为平台未能在应该进行垃圾回收时进行垃圾回收。
在 Android 10 中,垃圾回收器 (GC) 会跟踪系统 malloc() 分配的堆的总大小,确保 GC 触发计算中始终包含大型 malloc() 堆分配量。如果应用将大量 C++ 分配与 Java 执行交错进行,可能会导致垃圾回收频率增加。其他应用的频率则可能会略有下降。
测试和调试
Android 10 包含测试和调试方面的以下改进。
改进了设备上系统跟踪功能
从 Android 10 开始,您可以在执行设备端系统跟踪时指定跟踪记录的大小和时长限制。当您指定任一值时,系统会执行长跟踪,在记录跟踪时定期将跟踪缓冲区复制到目标文件。当达到您指定的大小或时长限制时,跟踪即告完成。
使用这些附加参数可以测试与使用标准跟踪记录测试不同的用例。例如,您可能正在诊断仅在应用运行很长时间后才会出现的性能 bug。在这种情况下,您可以记录一整天的长轨迹,然后分析报告中的 CPU 调度程序、磁盘活动、应用线程和其他数据,以帮助您确定 bug 的原因。
在 Android 10 及更高版本中,轨迹文件会以一种可使用 Perfetto(一个用于性能插桩和跟踪的开源项目)打开的格式保存。您可以将 Perfetto 轨迹文件转换为 Systrace 格式。
TextClassifier 方面的改进
Android 10 在 TextClassifier 接口中提供了额外的文本分类功能。
语言检测
detectLanguage() 方法的工作原理与之前存在的分类方法类似。它接收 TextLanguage.Request 对象并返回 TextLanguage 对象。
TextLanguage 对象由一系列有序对组成。每个对都包含一个语言区域和相应的分类置信度分数。
建议采取的对话操作
suggestConversationActions() 方法的工作原理与现有分类方法类似。它会接收一个 ConversationActions.Request 对象并返回一个 ConversationActions 对象。
ConversationActions 对象由 ConversationAction 对象列表组成。每个 ConversationAction 对象都包含一个潜在的建议操作及其置信度分数。
通知中的智能回复/操作
Android 9 引入了在通知中显示回复建议的功能。Android 10 在此基础上进行了扩展,能够添加基于 intent 的建议操作。此外,该平台能够自动生成这些建议。应用仍然可以提供自己的建议,也可以选择停用系统生成的建议。用于生成这些回复的 API 是 TextClassifier 的一部分,并且已在 Android 10 中直接向开发者公开。如需了解详情,请参阅有关 TextClassifier 改进的部分。
如果您的应用提供自己的建议,平台不会生成任何自动建议。如果您不希望应用的通知显示任何回复建议或操作,可以使用 setAllowGeneratedReplies() 和 setAllowSystemGeneratedContextualActions() 选择停用系统生成的回复和操作。