浏览器支持

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

warmup()

预热浏览器进程。

CustomTabsSession

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

setEngagementSignalsCallback()

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

isEngagementSignalsApiAvailable()

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

mayLaunchUrl()

告知浏览器未来可能会导航到某个网址。必须先指定最可能的网址。(可选)您可以提供其他可能的网址列表。系统会将其视为比第一个可能性更小,并且必须按优先级降序排序。系统可能会忽略这些额外的网址。之前对此方法的所有调用都将降低优先级。