Android Chrome Custom Tabs

news2025/3/15 15:41:44

参考文档

API文档

链接

Chrome Custom Tabs 参考文档

https://developer.chrome.com/docs/android/custom-tabs/

Chrome Custom Tabs最佳实践_customtabs_Just_Sanpark的博客-CSDN博客

Chrome Custom Tabs最佳实践_chrome custom tabs集成_wxx614817的博客-CSDN博客

Chrome Custom Tabs 用途

官方Link文档

 

安全性方面:

官方Link文档

 

Chrome Custom Tabs页面是否可以获取到键盘输入信息,键盘焦点吗?

  • 在 Android 中,Chrome Custom Tabs 不会直接提供应用程序访问用户的输入信息或键盘焦点的功能。Chrome Custom Tabs 的设计目的是在应用程序内提供一致的浏览器体验,同时保护用户的隐私和安全。

  • Chrome Custom Tabs 是作为 Chrome 浏览器的一部分运行的,并且在沙盒环境中处理用户的输入和交互。应用程序无法直接访问或拦截 Chrome Custom Tabs 中的用户输入信息。键盘焦点和输入信息由 Chrome 浏览器管理和处理。

什么是Custom Tabs?

当用户点击一个URL时,是应该用浏览器打开还是应该用应用内置的WebView打开呢?

两个选项都面临着一些问题。通过浏览器打开是一个非常重的上下文切换,并且是无法定制的。而WebView不能和浏览器共享数据并且需要需要手动去处理更多的场景。

Chrome Custom Tabs让APP在进行网页浏览时更多的控制权限,在不采用WebView的情况下,这既能保证Native APP和网页之间流畅的切换,又允许APP定制Chrome的外观和操作。可定义的内容如下:

  • toolbar的颜色

  • 进场和退场动画

  • 给Chrome的toolbar、overflow menu和bottom toolbar添加自定义操作

并且,Chrome Custom Tabs允许开发者对Chrome进行预启动和网页内容的预加载,以此提升加载的速度。

何时选择使用 WebView 和 Chrome Custom Tabs 呢?

如果要显示的网页内容是由您自己控制的,并且网页内容需要和 Android 组件交互,比如通过 JavaScript 接口来调用 Android 系统的一些功能,这种情况下你还需要用 WebView 来实现;
其他情况都可以用 Chrome Custom Tabs 来实现。

如果用户没有安装最新版本的Chrome,会发生什么呢?

Custom Tabs通过带有key Extras的 ACTION_VIEW Intent来定制UI。这就意味着将要打开的页面会通过系统浏览器或者用户默认浏览器打开。

Chrome Custom Tabs、WebView 和系统浏览器在安全性方面有一些区别:

  1. Chrome Custom Tabs(CCT):Chrome Custom Tabs 是一个集成了 Chrome 浏览器体验的解决方案,它提供了一种在应用程序内加载和显示网页内容的方式。由于使用了 Chrome 浏览器,它能够获得 Chrome 的安全性和更新。CCT 可以受益于 Chrome 浏览器的安全性功能,如安全浏览、自动更新和针对恶意网站的保护。

  2. WebView:WebView 是 Android 平台提供的组件,允许应用程序内嵌入和显示网页内容。WebView 的安全性主要依赖于 Android 系统的 WebView 实现以及使用的 WebView 版本。因此,安全性可能会受到设备制造商和操作系统版本的影响。对于 WebView,及时更新设备以获取最新的系统和 WebView 安全修复非常重要。

  3. 系统浏览器:系统浏览器通常是设备自带的默认浏览器,如Android设备上的"Browser"或"Safari"。系统浏览器的安全性主要取决于操作系统供应商的实现和更新。与 WebView 和 CCT 相比,系统浏览器可能具有更广泛的安全功能和更频繁的更新,因为它们通常由操作系统供应商负责。

总的来说,Chrome Custom Tabs 和系统浏览器在安全性方面更有优势,因为它们可以受益于 Chrome 浏览器的安全性功能和更新。但无论使用哪种解决方案,都需要确保及时更新设备以获得最新的安全修复和保护,并采取适当的安全措施来验证和过滤加载的网页内容。

Chrome Custom Tabs集成:

App build gradle:

// Chrome Custom Tabs
implementation 'androidx.browser:browser:1.3.0'

Activity 代码:

val linkStr = WpkUSApi.getInstance().oauthLink
val intent = CustomTabsIntent.Builder()
                .build()
intent.launchUrl(this, Uri.parse(linkStr))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/645844.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

红黑树(RBTree)c++实现

目录 红黑树介绍 红黑树的性质: 红黑树的结点类 搜索(红黑)树的旋转 旋转分为4种(左旋,右旋,左右双旋,右左双旋): 左旋(RotateL) 右旋(RotateR) 左右双旋(RotateLR) 右左双旋(RotateRL) 红黑树的插入 插入结…

计算机中丢失MSVCP140.dll无法启动此程序怎么办,可以使用这个方法修复

计算机中丢失MSVCP140.dll会导致很多软件跟游戏无法启动运行,这个问题相信困扰着不少小伙伴,遇到这个问题其实不用慌,也无需重装系统。需要先了解清楚MSVCP140.dll文件是什么,已经在我们电脑系统中的作用,了解清楚以后…

【技术干货】数字电路电平标准

信号的逻辑电平经历了从单端信号到差分信号、从低速信号到高速信号的发展过程。最基本的单端信号逻辑电平为CMOS、TTL,在此基础上随着电压摆幅的降低,出现LVCMOS、LVTTL等逻辑电平,随着信号速率的提升又出现ECL、PECL、LVPECL、LVDS、CML等差…

2.7V至25V宽输入电压15A 峰值电流

HT7179是一款高功率异步升压转换器,集成 20mΩ功率开关管,为便携式系统提供高效的 小尺寸解决方案。 HT7179具有2.7V至25V宽输入电压范围,可为 采用单节或两节锂电池,或12V铅酸电池的应 用提供支持。该器件具备15A开关电流能力&a…

【Java基础学习打卡05】命令提示符

目录 引言一、命令提示符是什么二、命令提示符常用命令1.打开命令提示符2.命令演示3.常用命令 总结 引言 知道命令提示符是什么,熟练打开命令提示符,熟练使用常用命令,并自行尝试其他命令。本文只是对命令提示符进行简单介绍和使用。 一、命…

绝版功能回归,Win11开始向Win7进化了

如果将 Win11 上架到 Steam 提供评论打分,那么 Win11 会和很多有争议的游戏一样:褒贬不一。 许多功能是吸引人的,但微软总会在什么时候突然给你一击。 前有 VBS 影响性能、谜之卡顿,后有各种广告、自动安装微软电脑管家。 以及我…

运营活动类项目测试方案设计

1、背景 随着业务的不断发展成熟,商业业务逐渐向重运营、重策略的模式发展,提出的需求中运营活动类需求数量也不断增多。而通过项目的积累、与其他业务的讨论共创,我们也积累了一批对运营活动类项目的测试点和对应的测试方案。下面我将从设计…

List容器(Java)

文章目录 1.容器介绍1.1 容器接口结构1.2 简单解析 2. List容器创建3. 访问操作(get, iterator, for)4. 修改操作(add, remove, set)5. 容量操作(clear, contains, isEmpty, size)6. 其他操作(toArray, )7. 泛型操作 1.容器介绍 1.1 容器接口结构 a. Java存储结构划分   Java…

通过使用动态ip解决网络连接问题

互联网的使用已经成为我们生活中不可或缺的一种生活方式。但是,有时候我们会遇到网络连接问题,如IP地址冲突、网络瘫痪等等。这种情况往往会影响我们的工作,现在我们一般使用动态ip地址来解决这些问题。 一、什么是动态ip地址 动态IP地址是由…

小白也可以做智慧大屏?我来帮你踩踩坑!【华为云Astro低代码体验季】

前提 进入华为云官网进行操作:https://www.huaweicloud.com/ Astro的便捷 其内部丰富的组件,简洁的操作,可支持独立空间管理,让人可以在短时间内就完成非常炫酷以及功能完善的页面 进入编辑页面后,可通过选择左侧的…

GPIO(嵌入式学习)

GPIO知识学习 1. GPIO的基本概念2. GPIO的实际应用3. 功能描述3.1 IO结构框图3.2 知识铺垫模拟/数字信号VDD、VSS、VCC施密特触发器片上外设 3.3 功能详述浮空输入上拉输入下拉输入模拟输入开漏输出推挽输出 4. GPIO相关寄存器4.1 寄存器4.2 功能 1. GPIO的基本概念 GPIO是英文…

java面经1

String, StringBuffer, StringBuilder区别 第一点是可变性。String不可变,String Buffer和StringBuider可变。这是因为String被final修饰,每次操作都生成新的对象。StringBuffer和StringBuilder的父类AbstractStringBuilder没有被final修饰。 第二点是…

视频点播系统

服务端功能模块划分 数据管理模块:负责针对客户端上传的视频信息进行管理。 网络通信模块:搭建网络通信服务器,实现与客户端通信。 业务处理模块:针对客户端的各个请求进行对应业务处理并响应结果。 前端界面模块:…

openEuler 开源汇智赢未来|2023开放原子全球开源峰会OpenAtom openEuler 论坛成功召开

6 月 12 日,2023 开放原子全球开源峰会 OpenAtom openEuler 分论坛在北京成功召开。分论坛以“openEuler 汇众智,奔涌向前赢未来”为主题,展示了 openEuler 社区的最新成果,阐述了 openEuler 开源开放的发展模式,介绍了…

jmeter模拟多用户并发

目录 前言: 一、100个真实的用户 二、100个用户同时登录 前言: JMeter可以轻松地模拟多用户并发,从而测试Web应用程序的性能和稳定性。 一、100个真实的用户 1、一个账号模拟100虚拟用户同时登录和100账号同时登录 区别 (…

如何使用Github搭建个人博客

介绍 在本文中,我将介绍如何使用GitHub搭建个人博客(免费)。GitHub是一个功能强大的版本控制和协作平台,它也可以用来托管和发布静态网页。通过将你的个人博客托管在GitHub上,你可以享受到版本控制的好处,…

STL之stack和queue

目录 stack和queue模拟实现一.介绍1.stack的类模板2.queue的类模板3.容器适配器 二. deque类1. 简介2.常用成员函数 三. stack模拟实现1.成员函数2.代码 四.queue的模拟实现1.成员函数2.代码 五.小结1.容器适配器 stack和queue模拟实现 一.介绍 1.stack的类模板 LIFO&#xf…

剖析Linux文件系统

Linux 文件系统体系结构是一个对复杂系统进行抽象化的有趣例子。通过使用一组通用的 API 函数,Linux 可以在许多种存储设备上支持许多种文件系统。例如,read 函数调用可以从指定的文件描述符读取一定数量的字节。read 函数不了解文件系统的类型&#xff…

外包,以后再也不去了....

先说一下自己的个人情况,大专生,18年通过校招进入湖南某软件公司,干了接近3年的点点点,后来我面了几家公司都没面上,最后把我想去外包混几个月的想法和我在腾讯的老哥讲了,他说外包,狗都不去&am…

打开Adobe软件出现弹窗“Adobe app is not available”无法使用的解决方法

运行Adobe软件遇到“Adobe app is not avAIlable”,是因为Adobe程序的 DNS 服务器无法联网验证,那么该怎么解决呢?搜索了一些网友用户的分享,大家可以试试看。 Adobe app 方法很简单,就是hosts添加屏蔽,使…