Android 相当于 iOS 的 SFSafariViewController

Mac*_*ich 6 android google-chrome webview sfsafariviewcontroller

在 iOS 上,有3 种显示网页内容的方法(一位 iOS 开发者告诉我):

  1. aUIWebView显示在 a 内UIControllerView如果我是正确的
  2. 一个SFSafariViewController作为一个UIControllerView
  3. Safari,应用程序本身

在Android上,就我而言,只有两种方法:

  1. a (a或布局WebView内)FragmentActivity
  2. 用户默认浏览器应用程序(如果有)(通常是 Chrome,但您知道任何可以处理该应用程序的应用程序Action.View Intent)。

不管怎样,它的优点SFSafariViewController是你的应用程序中有一个功能齐全的网络浏览器,而不会让你的应用程序在整个操作系统上保持恒定的用户体验。

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

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

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

所以我在这里问一个问题:这是否是官方的?真的有类似iOSChromeWebView的吗?SFSafariViewController如果是,如何实施?

感谢您的回答!

Mac*_*ich 5

似乎确实有一种官方方法:Chrome Custom Tabs详细信息如下: https: //developer.chrome.com/multidevice/android/customtabs


小智 5

是的,您可以通过使用来实现这一点CustomTabs

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

dependencies {

      implementation "androidx.browser:browser:1.3.0"
}
Run Code Online (Sandbox Code Playgroud)

对于Java

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

对于科特林

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

更多定制请看这里