浏览器支持

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()

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