是否可以从我的应用程序启动 Web 浏览器,并返回单击的 URL



我想知道是否可以从我的应用程序启动Web浏览器,当用户单击遵循特定模式的URL时,它会返回该URL。

例:

http://domain.top-level-domain/download-folder/file-to-download.its-extension

我不想这样做,因为我正在制作一个带有集成下载系统的应用程序,我希望用户能够以简单的方式选择要下载的文件(只需单击 URL)。过程是这样的:

  1. 您在网站上登录您的个人页面。
  2. 您浏览您的个人文件。
  3. 选择要下载的文件。
  4. 当您单击文件的URL时,该应用程序将自动下载并存储它。

第 4 步是我目前正在处理的步骤,无法真正解决。
使用外部浏览器,该过程将如下所示:

  1. 您在网站上登录您的个人页面。
  2. 您浏览您的个人文件。
  3. 选择要下载的文件。
  4. 复制网址。
  5. 将其粘贴到应用程序中。

这个过程可能看起来并不复杂,但无论如何我都想这样做。

编辑:我发现该页面上的下载链接是一行javascript,它将文件发送给用户。是否可以在页面上执行该行代码并检索文件?

如果您使用链接管理网页,则可以使用自定义网址意图来实现此目的https://developer.chrome.com/multidevice/android/intents
此功能取决于浏览器,因此Chrome可以,但也许其他浏览器不会... :(

这里有一些例子
Android Response To URL in Intent
从安卓浏览器启动自定义安卓应用程序

我最后一次尝试是在 50/60% 的浏览器上工作,所以......

您可以使用

自定义WebViewClient拦截WebView中的任何类型的 URI

webView.setWebViewClient(new WebViewClient() {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (url.contains("your_pattern")) {
            // Your stuff...
            return true;
        }
        return false;
    }
});

来自官方文档:

public boolean shouldOverrideUrlLoading (WebView view, String url)

让主机应用程序有机会在新的 URL 即将加载到当前 Web 视图中。如果 Web 视图客户端是 未提供,默认情况下 WebView 将要求活动管理器选择 URL 的正确处理程序。如果提供了 WebViewClient,则返回 true 表示主机应用程序处理 URL,而返回 false 表示当前 Web 视图处理 URL。不调用此方法 对于使用 POST"方法"的请求。

你也可以考虑方法应该拦截请求()。

最新更新