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
(在Fragment
或Activity
布局内)
用户默认浏览器应用(如果有)(通常是 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?