当我运行您的代码时,它确实返回绝对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:///
网址。
但是,这是一个起点,解决您的问题。
我使用此代码进行了测试,** did **从'request.getURL()'获取绝对URL。如果我的建议没有帮助,你能告诉我们你正在运行哪个设备和操作系统版本吗?谢谢。 – Nate