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

时间:2014-11-23 16:35:17

标签: android file browser download

我想知道是否可以从我的应用中启动网络浏览器,当用户点击跟随特定模式的网址时,它会返回该网址。

示例:

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

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

  1. 您在网站上登录个人页面。
  2. 您浏览个人文件。
  3. 您选择要下载的文件。
  4. 当您点击文件的网址时,应用会自动下载并存储。
  5. 步骤4是我目前正在进行的步骤,并不能真正解决 使用外部浏览器,该过程看起来像这样:

    1. 您在网站上登录个人页面。
    2. 您浏览个人文件。
    3. 您选择要下载的文件。
    4. 您复制网址。
    5. 您将其粘贴到应用中。
    6. 这个过程可能看起来并不复杂,但无论如何我都想这样做。

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

2 个答案:

答案 0 :(得分:2)

如果您使用链接管理WebPage,则可以使用Custom Url Intent实现此目的 https://developer.chrome.com/multidevice/android/intents

这个功能它取决于浏览器,所以Chrome会做,但也许其他浏览器不会... :(

这里有一些例子 Android Respond To URL in Intent
Launch custom android application from android browser

我最后一次尝试使用50/60%的浏览器,所以......

答案 1 :(得分:1)

您可以使用自定义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即将加载到当前的WebView中。如果是WebViewClient   未提供,默认情况下WebView将要求活动管理器选择   url的正确处理程序。如果提供了WebViewClient,则返回   true表示宿主应用程序处理url,而返回false   表示当前WebView处理URL。不调用此方法   对于使用POST"方法"。

的请求

您还可以考虑方法shouldInterceptRequest()