2013-01-18 29 views
1

手柄上的ressource要求绝对URL我用这个方法得到ressources的网址中包含网页得到黑莓

public InputConnection handleResourceRequest(BrowserFieldRequest request) throws Exception 
{ 
    final String url = request.getURL(); 
    return super.handleResourceRequest(request); 
} 

上,但是,我做了request.getURL();返回相对URL,而不是绝对URL。

如何更改它以获取绝对URL?

+1

我使用此代码进行了测试,** did **从'request.getURL()'获取绝对URL。如果我的建议没有帮助,你能告诉我们你正在运行哪个设备和操作系统版本吗?谢谢。 – Nate

回答

1

当我运行您的代码时,它确实返回绝对URL,即使当我的网页包含相对链接。也就是说,如果有时候,它不会让我感到惊讶。我还没有完全测试过这段代码,但我认为你可以尝试这样的事情。

基本上,你检查,看看是否URL是绝对的,如果不是,您可以通过使用父BrowserField文档URL组装绝对URL:

ProtocolController controller = new ProtocolController(_browserField) { 

    public InputConnection handleResourceRequest(BrowserFieldRequest request) throws Exception { 
     String absoluteUrl = null; 
     URI uri = URI.create(request.getURL()); 
     if (uri.isAbsolute()) { 
      absoluteUrl = request.getURL(); 
     } else { 
      String docUrl = _browserField.getDocumentUrl(); 
      String url = request.getURL(); 
      if (url.startsWith("/")) { 
       // the URL is relative to the server root 
       URI docUri = URI.create(docUrl); 
       absoluteUrl = docUri.getScheme() + "://" + docUri.getHost() + url; 
      } else { 
       // the URL is relative to the document URL 
       absoluteUrl = docUrl + url; 
      } 
     } 
     System.out.println(" requesting: " + absoluteUrl); 
     return super.handleResourceRequest(request); 
    } 
    } 

再次,对我来说,我得到的绝对URL ,所以我无法轻易测试URL相对的分支中的代码。因此,我可能会放弃"/"某处,或者不正确处理file:///网址。

但是,这是一个起点,解决您的问题。