谷歌 I/O 2023:新的 Android Web 功能


谷歌 I/O 2023 介绍了不同的在 Android 应用中嵌入 Web 内容的方式,同时展示了 Android 2023 的新 Web 功能:

WebView 改动

WebView 是将 Web 内容嵌入到 Android 应用中最常用的方式,最大优势之一是其强大的 API,可用于控制和修改正在加载的 Web 内容。 WebView 的新功能如下:

弃用 X-Requested-With 标头

当用户安装并运行使用 WebView 嵌入 Web 内容的应用程序时,WebView 会将 X-Requested-With 标头添加到发送到服务器的每个请求中。此标头的值是应用程序的 APK 名称,意味着每个请求都包含有关用户正在使用 Web 内容的上下文的特定信息,并将应用程序的身份泄露给在线服务。

为了保护用户隐私,WebView 团队从所有 WebView 请求中删除了 X-Requested-With 标头。推荐的代替方法是使用新的opt-in API ,可选择性地将请求标头发送到特定来源。如果想保留现有行为,还可以注册 X-Requested-With Deprecation源试用。

WebSettingsCompat.setRequestedWithHeaderOriginAllowList(
demoWebview.getSettings(), Collections.singleton("https://example.com")
);

WebView testing

WebView 现在支持 Chrome origin trials ,origin trials 版本允许访问 Chrome 中的新功能或实验性功能。目前 origin trials 只能在桌面和移动 Chrome 上使用,但从 Chrome M110 开始,origin trials 也可以在 WebView 上使用。

安装 WebView Beta 变得更容易,可以加入 Google Play 中的 WebView Beta 测试计划,设备将自动注册。

大屏幕设备支持

WebView 现在支持图像拖放。例如,在分屏视图模式下可以将图像从 WebView 拖到不同的应用程序中。

 

 

 

 

 

 

 

 

将拖放添加到 WebView 非常容易:只需在 AndroidManifest 中声明一个 DropDataProvider。

<application...>
 ...
 <provider
 android:authorities="com.example.webviewdemo.DropDataProvider"
 android:name="androidx.webkit.DropDataContentProvider"
 android:exported="false"
 android:grantUriPermissions="true"/>
 </application>

此外,Android U 上的 Chrome 和 WebView 将全面支持 HTML 输入字段中的手写,以及用于删除文本或添加空格的输入手势。对于使用 Android T 的其他设备,也可以在开发者选项下启用 HTML 输入手写。

Jetpack JavaScript 引擎

有时可能需要在程序中运行 JavaScript 而不显示任何 Web 内容;例如跨 Web 和移动应用程序共享业务逻辑时。为了使种操作更简易,谷歌去年推出了新的 JetPack JavaScript 引擎的 alpha 版本。该库使用 Chrome 的 JavaScript 引擎 V8,让应用程序无需创建 WebView 实例即可评估 JavaScript 或 WebAssembly 代码。

Jetpack 在不同的进程中执行 JavaScript 代码,使其成为在应用程序中运行 JavaScript 的安全稳定方式,需要的资源也比 WebView 实例更少。

ListenableFuture<JavaScriptSandbox> jsSandboxFuture =
JavaScriptSandbox.createConnectedInstanceAsync(JavaScriptEngineActivity.this);
JavaScriptIsolate jsIsolate = jsSandboxFuture.get().createIsolate();
final String code = 
"function sum(a, b) { let r = a + b; return r.toString(); }; sum(3, 4)";
ListenableFuture<String> resultFuture = jsIsolate.evaluateJavaScriptAsync(code);
…

Trusted Web Activity

将 Web 引入 Android 的另一种方法是使用 Trusted Web Activity (TWA)。通过使用 TWA,可以将可安装的 Web 应用程序发布到 Google Play,也可以在网络上构建一个活动,然后将其包含在 Android 应用程序中。

Trusted Web Activity 由用户的默认浏览器提供支持,浏览/交互体验和在浏览器中一模一样,除了 TWA 在 app 中全屏运行,且不显示 URL 栏。TWA 也支持设备默认浏览器的所有 Web 平台功能和 API。

 

还有一些 PWA 的改进和自定义标签 改进,详情可查看谷歌博客。


相關推薦

2023-05-13

谷歌在 I/O 2023 开发者大会上展示了 Android 14 的新功能,展示的新功能主要集中在个性化方面: 增强的锁屏个性化 Android 14 的一项突出功能是锁屏的增强自定义选项,用户可以更好地控制锁屏时钟等组件,从选择字体、颜色、

2022-08-24

Google I/O 大会上,谷歌宣布:官方正式支持将 Kotlin 作为 Android 开发的 First-Class(一等公民)语言。自此,Kotlin 开发商 JetBrains 和谷歌一直围绕 Kotlin 进行紧密合作,并共同创立了 Kotlin 基金会。 正如最初 I/O 公告中所强调的那

2023-05-12

谷歌在昨晚的 Google I/O 2023 大会上发布了用于 Android Studio 的 AI 编程助手 Studio Bot——支持生成代码和修复错误。Studio Bot 目前处于预览阶段,已集成到 Android Studio Hedgehog。 Studio Bot 由谷歌推出的基础编程模型 Codey 提供

2023-06-18

ng,直到找到一种适当的沙盒方法。 与此同时,Google 的 Android 正在使用 seccomp-bpf 过滤器,以确保应用程序无法访问 IO_uring。而未来的 Android 版本将使用 SELinux 来限制 IO_uring 仅用于选择的系统进程。 此外 Google 还在积极研究在

2023-11-05

受争议的 Web Environment Integrity API 提案,转而开发 Android WebView Media Integrity API。 今年 5 月份,谷歌在开发者邮件列表中宣布了其 Web Environment Integrity API,旨在作为一种限制在线欺诈和滥用的方法,同时不会引发跨站点

2023-03-02

在 2023 世界移动通信大会 (MWC) 上宣布了一系列针对 Android、Chromebook 和 Wear OS 的新功能,以提高设备的连接性、生产力、可访问性和乐趣。 首先是添加了一个新的 Google Keep single note 小部件,可帮助用户快速管理笔记并直

2023-08-02

反馈并汲取经验思考反思后的成果结晶。 目前他已离开谷歌,因此“Cap'n Proto 不隶属于谷歌,也从未隶属于谷歌”。基准测试结果表明,Cap'n Proto 比 Protocol Buffers 快无限倍。 自上一个版本 v0.10 以来,新版本的一些亮点内容

2022-09-14

:较低 目前 Ladybird  可在 Linux、macOS、Windows (WSL) 和 Android 上运行,但它仍处于开发初期,许多网络平台的功能仍缺失或损坏,需要很长时间才能准备好进行日常浏览。 Ladybird 已经通过了经典的 Acid3 标准测试,它涵盖了一

2022-05-12

对 6 个主要平台的稳定支持。现在,Flutter 可用于构建跨 Android、iOS、Web(桌面)、Linux、Windows 桌面和 macOS 的生产级应用程序。 添加平台支持需要的不仅仅是渲染像素:它包括新的输入和交互模型、编译和构建支持、可访问性

2022-09-16

更高效。 Google 开发技术推广工程师陈卓与大家分享了 Android 的最新动态。Android 13 已正式推出,该版本加入了对隐私、生产力和现代标准的支持和增强,以帮助开发者更轻松地构建优质应用与产品。 现代 Android 开发

2023-10-20

插件环境的使用率也在上升。 线程、垃圾收集和相对较新的组件模型提案,是大家最感兴趣的 WebAssembly 发展方向。 对于 WASI,最受关注的是 I/O 提案(例如 HTTP、文件系统)。 受访者对 WAI 发展的满意度明显低于对 WebAssembly

2022-06-03

/e/OS 是一个 “去谷歌化” 版本 Android 操作系统,它有 AOSP 核心,但没有任何谷歌应用程序或谷歌服务。其默认应用全部采用开源软件,且针对应用的隐私权限进行分级,以保护用户隐私。 目前 /e/OS 发布了 1.0 版本,带来如下

2022-06-10

谷歌已经使用其云计算将 Pi 的值计算到后 100 万亿位数,并声称这是 Pi 运算的最新世界纪录。 谷歌云博客详细介绍了这一壮举,这项运算工作在一台运行 Debian Linux 的 n2-highmem-128 实例上运行,使用了 128 个 vCPU(H2 实例运行 Inte

2023-11-24

:Rocket v0.5重新构建了核心请求处理部分,利用了Rust中最新的异步网络功能。Rocket现在可以自动在机器上的所有可用核心上多路复用请求处理,使路由处理程序可以声明为异步并使用await语法。   use rocket::tokio; use rocket::data::