“阅读”是 Android 设备上提供的 Google 助手功能,它为用户提供了一种阅读长篇网页内容(如新闻文章和博文)的另一种方式。用户可以说类似“嘿 Google,阅读它”之类的话,让应用大声朗读网页内容,突出显示正在朗读的文字,并自动滚动页面。要详细了解此功能,您还可以阅读“阅读”产品更新文章。
包含网页内容的 Android 应用可以通过使用onProvideAssistContent()
方法为助手提供信息来支持“阅读”。
此过程有助于在与助手共享数据时保持数据的结构。接收共享应用内容的用户随后可以进行深度链接或直接接收内容,而不是以文本或屏幕截图的形式接收。
为应用中的任何网页内容和任何可共享的实体
实现onProvideAssistContent()
。
向助手提供内容
为了让“阅读”能够访问您的内容,您的应用必须向助手提供有关内容的信息,例如其网页 URI 和一些基本上下文。然后,助手可以检索您的内容,以便大声朗读给用户。
对于已使用 WebView 或 Chrome 自定义标签实现网页内容的 Android 应用,请使用相同的网页 URI 作为“阅读”的起点。
将“阅读”功能与内置意图结合使用时,您只需要为用户在调用应用操作后任务流中的最终应用活动实现onProvideAssistContent()
。
例如,如果您的应用显示新闻文章,请在显示文章的最终屏幕中实现onProvideAssistContent()
;您无需为任何进行中或预览屏幕实现它。
在AssistContent
的uri
字段中提供内容的网页 URI。在structuredData
字段中提供作为JSON-LD对象使用 schema.org 词汇的上下文信息。
以下代码片段显示了向助手提供内容的示例
Kotlin
override fun onProvideAssistContent(outContent: AssistContent) { super.onProvideAssistContent(outContent) // Set the web URI for content to be read from a // WebView, Chrome Custom Tab, or other source val urlString = url.toString() outContent.setWebUri(Uri.parse(urlString)) // Create JSON-LD object based on schema.org structured data val structuredData = JSONObject() .put("@type", "Article") .put("name", "ExampleName of blog post") .put("url", outContent.getWebUri()) .toString() outContent.setStructuredData(structuredData) }
Java
@Override public void onProvideAssistContent(AssistContent outContent) { // Set the web URI for content to be read from a // WebView, Chrome Custom Tab, or other source String urlString = url.toString(); outContent.setWebUri(Uri.parse(urlString)); try { // Create JSON-LD object based on schema.org structured data String structuredData = new JSONObject() .put("@type", "Article") .put("name", "ExampleName of blog post") .put("url", outContent.getWebUri()) .toString(); outContent.setStructuredData(structuredData); } catch (JSONException ex) { // Handle exception Log.e(TAG, ex.getMessage()); } super.onProvideAssistContent(outContent); }
在实现onProvideAssistContent()
时,尽可能多地提供有关每个实体
的数据。以下字段是必需的
@type
.name
.url
(仅当内容可通过 URL 寻址时才需要)
要详细了解如何使用onProvideAssistContent()
,请参阅 Android 开发者文档中的优化助手的上下文内容指南。