Android 相当于 iOS 的 SFSafariViewController

Posted

技术标签:

【中文标题】Android 相当于 iOS 的 SFSafariViewController【英文标题】:Android equivalent of iOS' SFSafariViewController 【发布时间】:2020-06-27 09:58:53 【问题描述】:

ios 上,有 3 种显示网页内容的方式(正如一位 iOS 开发人员告诉我的):

    UIWebView 显示在 UIControllerView 中,如果我没记错的话 SFSafariViewController 作为UIControllerView Safari,应用程序本身

android上,就我而言,只有两种方式:

    WebView(在FragmentActivity 布局内) 用户默认浏览器应用(如果有)(通常是 Chrome,但您知道任何可以处理 Action.View Intent 的东西)。

无论如何,SFSafariViewController 的优势在于您的应用中拥有一个成熟的网络浏览器,而无需让您的应用在整个操作系统中保持不变的用户体验。

最近,我遇到了诸如 Reddit 或法国铁路应用程序 (OuiSNCF) 等应用程序,它们的网页内容显示方式与 iOS 上的 SFSafariViewController 非常相似:

它单独显示在您当前Activity 的顶部 它显示 URL 以及它是否安全 三点菜单图标在触摸对话框底部显示“Chrome 提供”(如果我的手机是法语的,我是正确的)。

但是在互联网和这里查看 SO,我只能找到通过 Intents 启动 Chrome 本身的方法。 寻找ChromeView我偶然发现了一些项目,没有官方的。

所以我在这里问这个问题:这是官方的吗?真的有一种ChromeWebView 类似于iOS 上的SFSafariViewController 吗?如果是,如何实现?

感谢您的回答!

【问题讨论】:

【参考方案1】:

似乎确实有官方方式:Chrome Custom Tabs,详情请看这里:https://developer.chrome.com/multidevice/android/customtabs。

【讨论】:

【参考方案2】:

是的,您可以使用CustomTabs 实现此目的

将此添加到您的 app/build.gradle 文件中

dependencies 

      implementation "androidx.browser:browser:1.3.0"

Java

String url = "https://paypeg.me/";
CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder();
CustomTabsIntent customTabsIntent = builder.build();
customTabsIntent.launchUrl(this, Uri.parse(url));

对于科特林

val url = "https://paypeg.me/"
           CustomTabsIntent.Builder()
           .build()
           .launchUrl(context, Uri.parse(url))

更多定制here

【讨论】:

以上是关于Android 相当于 iOS 的 SFSafariViewController的主要内容,如果未能解决你的问题,请参考以下文章

Android 相当于 iOS 的 AVMIDIPlayer?

iOS 中是不是有相当于 Android 旋转矢量的功能?

iOS中是不是有任何相当于Android的服务?

是否有相当于 android 的音轨的 iOS?

Android 相当于 iOS 中的 NSUserDefaults

iOS 相当于 Android 片段/布局