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

问题描述:

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

例子:

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

我wan't要做到这一点,因为我在做一个应用程序与集成下载系统,我希望用户能够选择要下载的文件中一个简单的方法(只需点击URL)。这个过程是这样的:

  1. 您登录到您的个人网页上的网站。
  2. 你浏览你的个人档案。
  3. 你选择一个你想下载的文件。
  4. 当您点击文件的URL时,该应用会自动下载并存储它。

第4步是我目前正在研究的步骤,并不能真正解决。
凭借外部浏览器,该过程将看起来是这样的:

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

这个过程看起来可能并不复杂,但我仍然想这样做。

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

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

从官方文档:

您可以通过使用自定义WebViewClient拦截任何类型的URI在你的WebView

public boolean shouldOverrideUrlLoading (WebView view, String url) 

给主机应用程序有机会接管当一个新的 url即将被加载到当前WebView中时的控件。如果未提供WebViewClient ,默认情况下,WebView将要求活动管理器为URL选择合适的处理程序 。如果提供了WebViewClient,则返回 true表示主机应用程序处理url,而返回false 表示当前WebView处理该url。对于使用POST“方法”的请求,此方法不称为 。

您也可以考虑方法shouldInterceptRequest()

如果您管理与链接的网页,你可以使用自定义网址意图 https://developer.chrome.com/multidevice/android/intents

此功能是依赖于浏览器,Chrome会做的,但也许其他浏览器没有达到这个... :(

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

我最后一次尝试正在对浏览的50/60% rs,所以......