浏览器支持

Patrick Kettner
Patrick Kettner

要直接在应用中创建自定义浏览器体验,自定义标签页是很好的选择,但它们并不是一成不变的。自定义标签页基于 intent 系统构建而成,包含一系列发送到最终用户首选浏览器的可配置选项请求。具体实现由各个浏览器选择。由于实现方式上的差异,自定义标签页功能的可用性可能会因 Android 浏览器而异。

下图是对 Android 生态系统中一些浏览器的比较。Android 上的绝大多数浏览器都提供一定程度的支持。这些表格并未涵盖所有情况,只是说明了您可能会看到的支持级别。您应该研究您的应用用户的默认浏览器,并确保以防御性编码编写。

CustomTabsIntent.Builder

CustomTabsIntent.Builder 可创建自定义标签页。您可以通过一系列的内置方法配置自定义标签页,以便使自定义标签页与应用尽可能无缝融合,如下所列。

addDefaultShareMenuItem()

addDefaultShareMenuItem() 用于向“自定义标签页”工具栏中添加默认分享按钮,以便用户通过设备上的各种应用分享当前网页。

addMenuItem()

添加菜单项。

左侧是一部显示使用 addMenuItem() 的应用的手机,右侧是一部未使用 API 的另一部手机

addToolbarItem()

向自定义标签页添加操作按钮。您可以通过此方法添加多个按钮。

enableUrlBarHiding()

允许用户向下滚动页面时网址栏隐藏。

setActionButton()

设置在工具栏中显示且具有默认色调行为的操作按钮。

左边是一部显示使用 setActionButton()() 的应用的手机,右边是一部没有该 API 的独立手机

setCloseButtonIcon()

设置显示在工具栏中的自定义关闭按钮。

左侧是一部显示使用 setCloseButtonIcon() 的应用的手机,右侧是一部未使用 API 的独立手机

setCloseButtonPosition()

设置自定义标签的“关闭”按钮图标。

左侧是一部显示使用 setCloseButtonPosition() 的应用的手机,右侧是没有使用 API 的单独手机

setColorScheme()

设置应用于自定义标签页中界面的配色方案。

左侧是一部显示使用 setColorScheme() 的应用的手机,右侧是一部未使用该 API 的单独手机

setColorSchemeParams()

设置应用于自定义标签页中界面的配色方案。

左侧是一部显示使用 setColorSchemeParams() 的应用的手机,右侧是一部没有该 API 的单独手机

setDefaultColorSchemeParams()

为指定的配色方案设置 CustomTabColorSchemeParams()。这样就可以为浅色和深色方案指定两种不同的工具栏颜色。

左侧是一部显示使用 setDefaultColorSchemeParams() 的应用的手机,右侧是一部没有该 API 的单独手机

setDefaultShareMenuItemEnabled()

设置是否向菜单中添加默认分享项。

setExitAnimations()

设置任何退出动画。

setInitialActivityHeightPx()

根据默认的调整大小行为设置自定义标签页 Activity 的初始高度(以像素为单位)。自定义标签页将发挥底部动作条的作用。这通常称为部分自定义标签页。

左侧是一部显示使用 setInitialActivityHeightPx() 的应用的手机,右侧是一部没有该 API 的单独手机

setNavigationBarColor()

设置导航栏颜色。对低于 L 的 API 版本没有影响。

setNavigationBarDividerColor()

setSecondaryToolbarColor()

设置辅助工具栏的颜色。

setShareState()

设置应应用于自定义标签的共享状态。

左侧是一部显示使用 setShareState() 的应用的手机,右侧是一部未使用该 API 的单独手机

setShowTitle()

设置标题是否应在自定义标签页中显示。

左侧是一部显示使用 setShowTitle() 的应用的手机,右侧是一部未使用该 API 的独立手机

setStartAnimations()

设置启动动画。

setToolbarColor()

设置工具栏颜色。在 Android L 及更高版本上,此颜色也会应用于状态栏。

setToolbarCornerRadiusDp()

设置工具栏顶角半径(以 dp 为单位)。

setUrlBarHidingEnabled()

设置是否应在用户向下滚动页面时隐藏网址栏。

CustomTabsClient

CustomTabsClient 是一个可选类,用于与 CustomTabsService 通信并从其创建 CustomTabsSession

预热()

预热浏览器进程。

CustomTabsSession

CustomTabsSession 是一个可选类,您可以提供给 CustomTabsIntent.Builder() 实例。使用此类时,您可以使用此类处理与自定义标签页之间的任何通信。

setEngagementSignalsCallback()

设置 EngagementSignalsCallback,以接收与用户与标签页中的网页互动相关的事件的回调。

isEngagementSignalsApiAvailable()

返回 Engagement Signals API 是否可用。Engagement Signals API 的可用性可能会在运行时发生变化。

MayLaunchUrl()

告知浏览器未来可能会导航到某个网址。必须先指定最可能的网址。您也可以选择提供其他可能网址的列表。它们被视为不如第一种可能性,且必须按优先级顺序降序排序。这些附加网址可能会被忽略。之前对此方法的所有调用都将降低优先级。