gpt4 book ai didi

相对链接上的 Android WebView 新窗口空 URL

转载 作者:太空宇宙 更新时间:2023-11-03 10:57:52 32 4
gpt4 key购买 nike

我已经实现了一个启用了 setSupportMultipleWindows() 的自定义 WebView。因此,我还有一个自定义 WebChromeClient 覆盖 onCreateWindow()

对于大多数用途,我使用以下代码 fragment 在新窗口中检索页面的 URL(即通过 target:_blank 打开):

Message href = view.getHandler().obtainMessage();
view.requestFocusNodeHref(href);

String url = href.getData().getString("url");

有空检查,但为了简单起见,我在上面的代码 fragment 中删除了它们。现在的问题是,有时数据 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() 中获取 URL 吗?

最佳答案

我还没有验证过,但你可以尝试以下方法:

 @Override
public boolean onCreateWindow(WebView view, boolean isDialog,
boolean isUserGesture, Message resultMsg) {
Logger.d(Constants.TAG, "onCreateWindow"+resultMsg);
WebView targetWebView = new WebView(getActivity()); // pass a context
targetWebView.setWebViewClient(new WebViewClient(){
@Override
public void onPageStarted(WebView view, String url,
Bitmap favicon) {
handleWebViewLinks(url); // you can get your target url here
super.onPageStarted(view, url, favicon);
}
});
WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
transport.setWebView(targetWebView);
resultMsg.sendToTarget();
return true;
}

希望这能解决您的问题! (=

关于相对链接上的 Android WebView 新窗口空 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53111619/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com