2013-01-18 32 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:///網址。

但是,這是一個起點,解決您的問題。