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

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

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

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

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

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

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

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

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

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

感谢您的回答!

【问题讨论】:

    标签: android google-chrome webview 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

      【讨论】:

        猜你喜欢
        • 2015-06-06
        • 2020-03-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-06
        相关资源
        最近更新 更多