【问题标题】:Open multiple links in external browser在外部浏览器中打开多个链接
【发布时间】:2021-11-11 15:34:39
【问题描述】:

我有一个网址列表。我需要在外部浏览器中一次打开它们,每个链接的页面都会生成一个新选项卡。例如,如果列表包含指向 google.com 和 yahoo.com 的链接,则它们都应该在浏览器中各自单独的选项卡中打开。

在外部浏览器中打开单个链接非常简单 - 创建一个 ACTION_VIEW 意图,设置 url 并调用 startActivity。但是如何使用多个 url 来做到这一点?执行多个 startActivity 调用将不起作用。有什么想法吗?

感谢您的宝贵时间!

【问题讨论】:

  • 您是否尝试过在一个意图中发送多个 URL?
  • 你会怎么做?此外,它应该是独立于浏览器的。

标签: android kotlin android-intent


【解决方案1】:

我的回答是基于一些研究,所以我不确定确切的代码,但我会在这里提出一种方法

首先,您可以在布局文件中分别使用带有WebView 视图类型的FragmentActivity,并根据您的用例,获取WebView 的参考。我们会将您的 url 列表传递给包含 Webview 的活动

说吧,我们就是这样做的

val arrayList = getIntent().getArrayListExtra("urls")
val webView = findViewById<WebView>(R.id.myWebview)

现在我们可以监听WebView 的滚动变化,并等待用户到达WebView 页面的末尾,如下链接所示

How to check the scrollend of WebView

然后当到达滚动结束时,我们可以从数组中加载下一个url

webView.setOnScrollChangeListener((view, i, i1, i2, i3) -> {
            int r1 = webView.computeVerticalScrollRange();
            int r2 = webView.computeVerticalScrollExtent();
            if (i1 == (r1 - r2)) {
                webView.loadUrl(arrayList.get(1) // Or Whatever your next 
                index is
             // Maybe maintain a global variable for which url is currently 
            loaded
            } 
        });

为了让用户体验更好,您可以考虑为您的WebView 设置WebViewClient 并覆盖onProgressChanged 以向用户显示进度,以防他不感到迷茫

【讨论】:

  • 告诉我,如果这对你有用,我只是在脑海中产生了一个想法,然后通过一些研究为你找到了解决方案
  • “在外部浏览器中”似乎暗示 OP 没有使用 WebView
  • @Code-Apprentice 你是对的,但我不认为我们可以对外部浏览器进行一些控制,而不仅仅是请求它们打开 url。因此,WebView 将始终首选具有浏览器功能和自定义功能
  • 是的,没错,没有webview。它们应该在默认浏览器中打开,因此解决方案必须简单通用,以便在许多浏览器中运行。
  • 好吧,那我应该删除这个答案吗?
猜你喜欢
  • 1970-01-01
  • 2014-07-12
  • 2018-02-11
  • 2017-08-06
  • 1970-01-01
  • 1970-01-01
  • 2015-12-09
  • 2017-05-13
  • 2011-06-14
相关资源
最近更新 更多