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 包含一些与网络和连接相关的改进。
Wi-Fi 网络连接 API
Android 10 添加了对点对点连接的支持。此功能使您的应用能够提示用户更改设备连接到的接入点,方法是使用WifiNetworkSpecifier
来描述所需网络的属性。点对点连接用于非网络提供目的,例如为 Chromecast 和 Google Home 硬件等辅助设备引导配置。
有关更多信息,请参阅用于点对点连接的 Wi-Fi 网络请求 API。
Wi-Fi 网络建议 API
Android 10 添加了对您的应用提示用户连接到 Wi-Fi 接入点的支持。您可以提供要连接到的网络建议。平台最终将根据您和其他应用的输入选择要接受的接入点。
有关此功能的更多信息,请参阅Wi-Fi 建议。
对 Wi-Fi 高性能和低延迟模式的改进
Android 10 允许您向底层调制解调器提供提示以最大程度地减少延迟。
Android 10 扩展了 Wi-Fi 锁定 API 以有效支持高性能模式和低延迟模式。对于高性能和低延迟模式,Wi-Fi 电源节省功能被禁用,并且根据调制解调器的支持,可以在低延迟模式下启用进一步的延迟优化。
只有当获取锁定的应用程序在前台运行且屏幕亮起时,才会启用低延迟模式。低延迟模式对于实时手机游戏应用程序特别有用。
DNS 解析器中的专门查找
Android 10 原生支持使用明文查找和 DNS-over-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
意图将其集成到其设置和配置流程中。
有关此功能的更多信息,请参阅 Wi-Fi Easy Connect。
Wi-Fi Direct 连接 API
WifiP2pConfig
和 WifiP2pManager
API 类在 Android 10 中进行了更新,以支持使用预定信息快速建立到 Wi-Fi Direct 的连接。此信息通过辅助通道(例如蓝牙或 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
权限以提供来电筛选和主叫号码显示功能的要求。
呼叫重定向服务 API
Android 10 更改了呼叫意图的处理方式。该 NEW_OUTGOING_CALL
广播已弃用,并由 CallRedirectionService
API 替换。该 CallRedirectionService
API 提供接口,供您修改 Android 平台发起的呼叫。例如,第三方应用程序可能会取消呼叫并通过 VoIP 将其重新路由。
在外部存储上创建文件的改进
除了引入 作用域存储 之外,Android 10 还添加了以下与外部存储相关的功能
- 您可以使用
IS_PENDING
标志 在媒体文件写入磁盘时授予您的应用程序对其的独占访问权限。 - 如果您知道文件应存储的特定位置,则可以 向系统提供提示 以了解存储新写入文件的位置。
- 每个外部存储设备都有一个 唯一的卷名。
媒体和图形
Android 10 引入了以下新的媒体和图形功能和 API
共享音频输入
Android 10 添加了两个应用程序同时共享音频输入的功能。有关完整信息,请参阅 共享音频输入。
音频播放捕获
Android 10 使应用程序能够捕获其他应用程序的音频播放。有关完整信息,请参阅 播放捕获。
MediaStyle 通知中的 Seekbar
从 Android 10 开始,MediaStyle
通知显示一个 Seekbar。Seekbar 显示来自 PlaybackState.getPosition()
的播放进度,在某些情况下,Seekbar 可用于在正在播放的程序中跳转到某个位置。Seekbar 的外观和行为受以下规则控制
- 如果存在活动的
MediaSession
且其持续时间(由MediaMetadata.METADATA_KEY_DURATION
指定)大于零,则会显示 Seekbar。这意味着对于不确定的流(如直播和广播)不会出现该条。 - 如果会话实现
ACTION_SEEK_TO
,则用户可以拖动 Seekbar 来控制播放位置。
原生 MIDI API
Android 原生 MIDI API (AMidi) 使应用程序开发人员能够使用 C/C++ 代码发送和接收 MIDI 数据,更紧密地集成到其 C/C++ 音频/控制逻辑中,并最大程度地减少对 JNI 的需求。
有关更多信息,请参阅 Android 原生 MIDI API。
MediaCodecInfo 改进
Android 10 向 MediaCodecInfo
添加了方法,这些方法揭示了有关编解码器的更多信息。
有关更多信息,请参阅 媒体编解码器。
热管理 API
当设备过热时,可能会限制 CPU 和/或 GPU 的性能,这可能会以意想不到的方式影响应用程序和游戏。使用复杂图形、大量计算或持续网络活动的应用程序更容易遇到问题,并且这些问题可能会因设备而异,具体取决于芯片组和核心频率、集成级别以及设备包装和外形尺寸。
在 Android 10 中,应用程序和游戏可以使用热管理 API 监控设备上的变化,并采取措施降低功耗以恢复正常温度。应用程序 注册侦听器 在 PowerManager 中,系统通过该侦听器报告持续的热状态,范围从轻度和中度到严重、严重、紧急和关机。
当设备报告热应力时,应用程序和游戏可以通过减少正在进行的活动来帮助降低功耗。例如,流媒体应用程序可以降低分辨率/比特率或网络流量,相机应用程序可以禁用闪光灯或密集的图像增强功能,游戏可以降低帧率或多边形细分,媒体应用程序可以降低扬声器音量,地图应用程序可以关闭 GPS。
热管理 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。此方法为交互式和非交互式 UI 元素提供对用户定义超时的支持。返回值受用户偏好和辅助功能服务 API 的影响。
自动填充改进
Android 10 包含以下对自动填充服务的改进。
与兼容性相关的自动填充请求
您可以使用FillRequest.FLAG_COMPATIBILITY_MODE_REQUEST
标志来确定自动填充请求是否通过兼容模式生成。
同时保存用户名和密码
您可以通过使用SaveInfo.FLAG_DELAY_SAVE
标志来支持应用程序使用多个活动来显示用户名、密码和其他字段的情况。
用户与保存 UI 的交互
您可以通过在对话框上设置操作侦听器并更改相应密码远程视图的可见性,在保存对话框中显示和隐藏密码字段。
支持更新数据集
自动填充可以更新现有的密码。例如,如果用户已存储密码,并且他们保存了新密码,则自动填充会提示用户更新现有密码,而不是保存新密码。
字段分类改进
Android 10 包含以下对字段分类 API 的改进。
UserData.Builder 构造函数
UserData.Builder
构造函数已更改,以更好地符合Builder
模式。
允许将值映射到多种类型的类别 ID
在 Android 10 中使用UserData.Builder
时,您现在可以将值映射到多种类型的类别 ID。在以前的版本中,如果多次添加值,则会抛出异常。
改进对信用卡号码的支持
字段分类现在可以检测四位数作为信用卡号码的后四位。
支持特定于应用程序的字段分类
Android 10 添加了FillResponse.setUserData()
,它允许您为会话期间设置特定于应用程序的用户数据。这有助于自动填充服务检测具有特定于应用程序内容的字段的类型。
UI 和系统控件
Android 10 提供了以下用户界面改进
支持 JVMTI PopFrame 功能
Android 10 添加了对 Android JVMTI 实现中can_pop_frames
功能的支持。在调试时,此功能允许您在暂停断点并调整局部变量、全局变量或函数实现后重新运行函数。有关更多信息,请参阅 Oracle 的Pop Frame 参考页面。
SurfaceControl 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()
(每五秒钟不超过一次),但不会采取其他操作。如果WebView
再次变得响应,系统只会调用onRenderProcessResponsive()
一次。
设置面板
Android 10 引入了设置面板,这是一个 API,允许应用程序在应用程序上下文中向用户显示设置。这可以防止用户需要进入**设置**以更改**NFC**或**移动数据**等内容才能使用该应用程序。
例如,假设用户在设备处于飞行模式时打开网络浏览器。在 Android 10 之前,应用程序只能显示一条通用消息,要求用户打开设置以恢复连接。使用 Android 10,浏览器应用程序可以显示一个内联面板,显示关键连接设置,例如飞行模式、Wi-Fi(包括附近的网络)和移动数据。使用此面板,用户无需离开应用程序即可恢复连接。
要显示设置面板,请使用以下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
- 显示与互联网连接相关的设置,例如飞行模式、Wi-Fi 和移动数据。
ACTION_WIFI
- 显示 Wi-Fi 设置,但不显示其他连接设置。这对于需要 Wi-Fi 连接才能执行大型上传或下载的应用程序很有用。
ACTION_NFC
- 显示与近场通信(NFC)相关的所有设置。
ACTION_VOLUME
- 显示所有音频流的音量设置。
共享改进
Android 10 提供了许多共享改进
共享快捷方式 API
共享快捷方式 API 允许应用程序提前发布直接共享目标,而不是按需响应地检索结果。这就是ShortcutManager
的工作原理。由于这两个 API 类似,因此我们扩展了ShortcutInfo
API,以使使用这两个功能更容易。使用共享快捷方式 API,您可以直接将类别或人员分配到共享目标。共享目标会保留在系统中,直到相同的应用程序更新它们或卸载应用程序。
旧的直接共享机制仍然有效,但使用它的应用程序的优先级低于使用共享快捷方式 API 的应用程序。
ShortcutInfo.Builder
添加并增强了方法,以提供有关共享目标的更多信息。
直接共享目标
您可以将动态快捷方式发布为直接共享目标。请参阅发布直接共享目标。
ShortcutManagerCompat
是一个新的 AndroidX API,它提供了与旧的 DirectShare API 的向后兼容性。这是发布共享目标的首选方法。
预览文本
当应用程序共享文本内容时,它可以在 Sharesheet UI 中显示内容的可选预览。
请参阅添加丰富的文本预览
了解更多
有关应用程序如何共享数据的更多信息,请参阅将简单数据发送到其他应用程序和从其他应用程序接收简单数据
深色主题
Android 10 提供了一个深色主题,该主题适用于 Android 系统 UI 和设备上运行的应用程序。有关完整信息,请参阅深色主题。
前台服务类型
Android 10 引入了foregroundServiceType
XML 清单属性,您将其包含在几个特定服务的定义中。尽管很少合适,但可以将多个前台服务类型分配给特定服务。
下表显示了不同的前台服务类型以及声明特定类型的服务。
前台服务类型 | 应声明此类型的服务的示例用例 |
---|---|
connectedDevice
| 监控可穿戴健身追踪器 |
dataSync
| 从网络下载文件 |
location
| 继续用户发起的操作 |
mediaPlayback
| 播放有声读物、播客或音乐 |
mediaProjection
| 在短时间内录制设备显示屏的视频 |
phoneCall
| 处理正在进行的电话呼叫 |
Kotlin
Android 10 包含以下针对 Kotlin 开发的更新。
libcore API 的可空性注释
Android 10 改进了 SDK 中 libcore API 的可空性注释的覆盖范围。这些注释使正在 Android Studio 中使用 Kotlin 或 Java 可空性分析的应用程序开发人员能够在与这些 API 交互时获取空值信息。
通常,Kotlin 中的可空性契约违规会导致编译错误。为了确保与现有代码的兼容性,只添加了@RecentlyNullable
和@RecentlyNonNull
注释。这意味着可空性违规会导致警告而不是错误。
此外,在 Android 9 中添加的任何@RecentlyNullable
或@RecentlyNonNull
注释都将分别更改为@Nullable
和@NonNull
。这意味着在 Android 10 及更高版本中,可空性违规会导致错误而不是警告。
有关注释更改的更多信息,请参阅Android 开发者博客上的Android Pie SDK 现在更适合 Kotlin。
NDK
Android 10 包含以下 NDK 更改。
改进的文件描述符所有权调试
Android 10 添加了 fdsan,它可以帮助您更轻松地查找和修复文件描述符所有权问题。
与文件描述符所有权错误处理相关的错误(通常表现为使用后关闭和双重关闭)类似于内存分配的使用后释放和双重释放错误,但往往更难以诊断和修复。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()
分配的堆的总大小,确保始终将大型malloc()
分配包含在 GC 触发计算中。作为结果,交错大量 C++ 分配和 Java 执行的应用可能会看到垃圾回收频率增加。其他应用可能会看到略微下降。
测试和调试
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 在此基础上扩展了包含建议的基于意图的操作的功能。此外,平台能够自动生成这些建议。应用仍然可以提供自己的建议,或者选择退出系统生成的建议。用于生成这些回复的 API 是TextClassifier
的一部分,并且在 Android 10 中也已直接公开给开发者。请阅读有关 TextClassifier 改进的部分以获取更多信息。
如果您的应用提供自己的建议,则平台不会生成任何自动建议。如果您不希望应用的通知显示任何建议的回复或操作,则可以使用setAllowGeneratedReplies()
和setAllowSystemGeneratedContextualActions()
选择退出系统生成的回复和操作。