Android 10 为用户和开发者引入了强大的功能。本文重点介绍面向开发者的功能。
要了解 API,请阅读 API 差异报告或访问 Android API 参考文档 - 查找 API 级别 29”。此外,请务必查看 Android 10 行为 (针对以 API 级别 29 为目标平台的应用和 所有应用)以及隐私设置 变更,了解平台变更可能涉及的方面 影响您的应用。
安全增强功能
Android 10 引入了若干安全功能, 总结。
改进了生物识别身份验证对话框
Android 10 引入了以下改进: 生物识别身份验证支持:
- 添加了针对生物识别身份验证功能的检查。
- 一种回退机制,可让用户使用其设备进行身份验证 PIN 码、图案或密码(如果他们无法使用生物识别技术进行身份验证) 输入。
- 告知系统在用户之后不要求用户确认的提示 已使用隐式生物识别模态进行身份验证。例如,你可以 告知系统,在用户完成相应操作后无需进一步确认。 使用人脸身份验证进行身份验证。
直接从 APK 运行嵌入式 DEX 代码
从 Android 10 开始,您可以告知平台运行嵌入式 DEX 直接从您应用的 APK 文件中添加代码。此选项有助于防止 如果攻击者曾设法篡改了服务器上本地编译的代码, 设备。
如需了解详情,请参阅 直接从 APK 运行嵌入式 DEX 代码。
TLS 1.3 支持
Android 10 增加了对 TLS 1.3。TLS 1.3 是 具有性能优势和增强安全性的 TLS 标准。我们的 基准数据表明,在某个时间段内可以建立高达 40% 的安全连接, 与 TLS 1.2 相比,使用 TLS 1.3 的速度更快。
要详细了解我们的 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 接入点。您可以提供关于要连接哪个网络的建议 目标。平台最终会根据来自您的应用和其他应用的输入来选择要接受的接入点。
如需详细了解此功能,请参阅 WLAN 建议。
改进了 WLAN 高性能和低延迟模式
借助 Android 10,您可以为底层调制解调器提供提示,以最大限度地缩短延迟。
Android 10 扩展了 Wi-Fi Lock API,以有效地支持高性能 模式和低延迟模式。为了实现高性能和 低延迟模式,并且可以在低延迟模式下进一步优化延迟 模式,具体取决于调制解调器支持。
低延迟模式仅在获取锁的应用 在前台运行且屏幕处于开启状态低延迟模式 这对于实时移动游戏应用尤为有用。
DNS 解析器中的专用查找
Android 10 使用明文查找和“通过传输层安全协议 (TLS) 执行 DNS”模式,增加了对专用 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。
有关此功能的详细信息,请参阅 Wi-Fi Easy Connect。
Wi-Fi Direct connection API
Android 10 中的 WifiP2pConfig
和 WifiP2pManager
API 类有更新
支持快速建立到 Wi-Fi 直连的
预先确定的信息此信息通过边信道分享,例如
例如蓝牙或 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 重新路由呼叫。
在外部存储设备中创建文件的相关改进
除了引入限定范围的 storage、 Android 10 增加了以下与外部 storage:
- 您可以使用
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 中的工具,系统通过它 报告持续的热状态(从轻度、中度到严重不等), “重要”“紧急情况”和“关机”
当设备报告热应力时,各应用和游戏可以减少正在进行的活动,以此来帮助减少各个方面的耗电量。例如: 在线影音应用可能会降低分辨率/比特率或降低网络流量, 应用可能会停用 Flash 或密集的图片增强功能, 帧速率或多边形纹理,媒体应用可以降低扬声器音量, 地图应用可以关闭 GPS
Thermal API 需要新的设备 HAL 层,目前受支持 并且我们正在与设备制造商合作 以尽快为生态系统提供广泛支持。
摄像头和图片
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 中,用户可以在 Ctrl+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
使用
UserData.Builder
英寸
在 Android 10 中,您现在可以将一个值映射到多种类型的类别 ID。在
如果多次添加同一个值,则会抛出异常。
改进了对信用卡号码的支持
字段分类现在可以将四位数检测为最后四位数 例如信用卡号
支持特定于应用的字段分类
Android 10 添加功能
FillResponse.setUserData()
,
这允许您在会话期间设置特定于应用的用户数据。
这有助于自动填充服务检测包含特定于应用的字段的类型
内容。
界面和系统控件
Android 10 提供界面方面的以下改进:
支持 JVMTI PopFrame 功能
Android 10 增加了对
can_pop_frames
功能。调试时,此功能会
让您可以在断点处暂停并调整
局部变量、全局变量或函数的实现。如需了解详情,请参阅
Oracle 的 Pop Frame 参考页面。
Surface Control API
Android 10 提供了 SurfaceControl
API,用于对系统合成器 (SurfaceFlinger
) 进行低级别访问。对于大多数用户而言,SurfaceView 是使用此合成器的正确方法。通过
SurfaceControl
API 在某些情况下很有用,例如:
- 同步多个表面
- 跨进程的表面嵌入
- 底层生命周期管理
SurfaceControl
API 在 SDK 和 NDK 绑定中都可用。NDK 实现包含一个通过 API 手动交换缓冲区的 API,
合成器。这为遇到过
存在局限性
BufferQueue
。
WebView 挂起渲染程序检测
Android 10 引入了
WebViewRenderProcessClient
抽象类,应用可以使用该类来检测
WebView
已无响应。如需使用此类,请执行以下操作:
- 定义您自己的子类并实现其
onRenderProcessResponsive()
和onRenderProcessUnresponsive()
方法。 - 将
WebViewRenderProcessClient
的实例附加到一个或多个WebView
对象。 - 如果
WebView
无响应,系统会调用 客户端的onRenderProcessUnresponsive()
方法,传递WebView
和WebViewRenderProcess
。(如果WebView
是单进程,则WebViewRenderProcess
参数为 null)。您的应用可以采取适当的操作,例如显示 对话框,询问用户是否要停止呈现过程。
如果 WebView
保持无响应状态,则系统会定期调用 onRenderProcessUnresponsive()
(不超过每五秒钟一次),但不会执行任何其他操作。如果 WebView
变为响应状态
则系统只调用一次 onRenderProcessResponsive()
。
设置面板
Android 10 引入了设置面板,这是一个允许应用显示 和设置。这样可以防止用户 进入设置,更改设置中的 NFC 或移动数据 用户才能使用该应用
例如,假设用户在设备处于打开状态时打开网络浏览器 飞行模式。在 Android 10 之前,应用只能显示常规消息 要求用户打开设置以恢复连接。对于 Android 10, 浏览器应用可以显示一个内联面板,其中显示关键连接设置 例如飞行模式、Wi-Fi(包括附近的网络)和移动数据。包含 此面板,用户无需离开应用即可恢复连接。
如需显示设置面板,请触发具有以下其中一项的 intent
Settings.Panel
操作:
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 来同时使用
功能。借助 Shared Shortcuts API,您可以直接将
共享目标对象。共享目标会保留在系统中
直到同一应用进行更新或卸载应用为止。
旧版“直接共享”机制仍有效,但使用该机制的应用的优先级低于使用 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 扩大了可为 null 性注解的覆盖范围 用于 libcore API 的 SDK。借助这些注解,使用 在 Android Studio 中进行 Kotlin 或 Java 可为 null 性分析,以获取 null 性 与这些 API 交互时提供的信息。
通常,Kotlin 中的可为 null 性合同违规行为会导致编译
错误。为了确保与现有代码兼容,只有
添加了 @RecentlyNullable
和 @RecentlyNonNull
注解。这意味着
可为 null 性违规行为导致的是警告,而不是错误。
此外,之前被触发的所有 @RecentlyNullable
或 @RecentlyNonNull
注解
已分别更改为 @Nullable
和 @NonNull
。
这意味着,在 Android 10 及更高版本中,可为 null 性违规行为
会导致错误,而不是警告。
如需详细了解注释更改,请参阅 Android Pie SDK 现已更适用于 Kotlin 。
NDK
Android 10 包含 NDK 方面的以下变更。
改进了文件描述符所有权的调试
Android 10 添加了 fdsan,它可以帮助您查找和修复文件描述符所有权 更轻松地解决问题
与错误处理文件描述符所有权相关的错误,这些错误往往会表现出来 use-after-close 和 double-close,类似于内存分配 use-after-free 和 Double-free bug,但往往更难处理 诊断和修复。fdsan 会尝试检测和/或阻止文件描述符 通过强制文件描述符所有权来不当管理。
如需详细了解与这些问题相关的崩溃,请参阅 fdsan 检测到的错误。 有关 fdsan 的更多信息,请参阅 关于 fdsan 的 Googlesource 页面。
ELF TLS
使用 API 级别 29 及更高版本的 NDK 编译的应用可以使用 ELF TLS,而非 emutls
。添加了对动态和静态链接器的支持,
这种处理线程局部变量的方法。
对于为 API 级别 28 及更低级别构建的应用,我们已实现一些改进
让 libgcc/compiler-rt
能够解决一些 emutls
问题。
如需了解详情,请参阅 面向 NDK 开发者的 Android 变更。
运行时
Android 10 包含运行时方面的以下变更。
触发基于 Mallinfo 的垃圾回收
当小型平台 Java 对象引用 C++ 堆中的大型对象时, 通常只有在收集 Java 对象时才能回收 C++ 对象,并且 例如已敲定在之前的版本中,平台会预估 与 Java 对象关联的许多 C++ 对象的列表。此估算值并非总是 有时会导致内存使用量大幅度增加,因为 平台无法按预期进行垃圾回收。
在 Android 10 中,垃圾回收器 (GC) 会跟踪总大小
由系统 malloc()
分配的堆中,确保较大的 malloc()
分配始终包含在可触发 GC 的计算中。因此,与 Java 执行交错大量 C++ 分配的应用可能会出现垃圾回收频率提高的现象。其他应用的频率则可能会略有下降。
测试和调试
Android 10 包含测试和调试方面的以下改进。
改进了设备上系统跟踪功能
从 Android 10 开始,您可以指定 对跟踪记录的持续时间 设备端系统轨迹。如果您指定 系统执行长期跟踪,定期复制跟踪 缓冲区。跟踪记录完成 在达到您指定的尺寸或时长限制时触发。
请使用这些附加参数来测试除了您使用标准轨迹进行测试的用例之外的其他用例。例如,您可能正在诊断某个性能错误,而此错误仅在您的应用长时间运行后才会发生。在 在这种情况下,您可以记录一整天的长期轨迹,然后分析 CPU 调度程序、磁盘活动、应用线程和其他数据 可以帮助您确定错误的原因。
在 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()
。