【发布时间】:2019-04-06 06:54:25
【问题描述】:
我实现了一个自定义WebView 并启用了setSupportMultipleWindows()。因此,我还有一个自定义的 WebChromeClient 覆盖 onCreateWindow()
对于大多数用途,我使用以下 sn-p 在新窗口(即通过 target:_blank 打开)中检索页面的 URL:
Message href = view.getHandler().obtainMessage();
view.requestFocusNodeHref(href);
String url = href.getData().getString("url");
有空检查,但为了简单起见,我在上面的 sn-p 中删除了它们。现在的问题是,有时数据Bundle(通过getData() 返回)的相对链接的URL 为空(即href="/somepage" 而不是href="https://www.example.com/somepage/")。
所以我在 SO 上搜索并找到了另一种可能的解决方案:
WebView.HitTestResult result = view.getHitTestResult();
String url = result.getExtra();
但是,这也返回 null。如果我使用result.getType() 获取数据类型,则返回0,它映射到UNKNOWN_TYPE。`
我不确定为什么它会为上述方法返回 null。
注:如果我禁用对多个窗口的支持,那些相同的链接就可以正常工作。但是,禁用此类支持不是一种选择。 还有其他方法可以从onCreateWindow() 中获取网址吗?
【问题讨论】:
标签: android android-webview webchromeclient