gpt4 book ai didi

android - 使用 loadDataWithBaseURL 禁用 webview 中的链接

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:20:26 33 4
gpt4 key购买 nike

我使用以下代码加载电子书的 html 内容,其中 templateString 包含连接到主文件中的样式表和图像的 html 内容。

String itemURL = "file://" + itemPath;
testWV.loadDataWithBaseURL(itemURL, templateString, "text/html", "UTF-8", "about:blank");

我面临的问题是 anchor 链接根本没有响应。

我注意到如果 itemURL 为 null 或者如果我使用 loadData 而不是 loadDataWithBaseURL,链接可以工作,但我松开了通过 itemURL 连接的图像和样式的连接。

请注意,webview 可见性始终设置为可见。添加我在webview中添加了以下功能

this.getSettings().setJavaScriptEnabled(true);
this.requestFocusFromTouch();
this.setVerticalScrollBarEnabled(false);
this.setHorizontalScrollBarEnabled(false);
this.getSettings().setSupportZoom(true);
this.getSettings().setBuiltInZoomControls(true);
this.getSettings().setDisplayZoomControls(false);
this.getSettings().setAllowContentAccess(true);
this.getSettings().setAllowFileAccess(true);
this.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
this.getSettings().setAllowFileAccessFromFileURLs(true);
this.getSettings().setAllowUniversalAccessFromFileURLs(true);

这是为 webview 初始化的 onTouch 方法:

this.setOnTouchListener(new View.OnTouchListener() {

public boolean onTouch(View v, MotionEvent event) {

WebView.HitTestResult hr = ((WebView)v).getHitTestResult();
System.out.println("getExtra: "+hr.getExtra());
// getExtra always gives null when webview loaded with loadDataWithBaseURL while it should give the url of the link pressed when the user touches a link

return false;
}
});

如果需要更多代码,我可以分享。

最佳答案

WebViewClient 设置为您的 webView 并在 loadDataWithBaseURL 中加载数据并传递您的基本 url

这将有助于将 anchor url 加载到 webview

 webview.getSettings().setJavaScriptEnabled(true);
webview.requestFocusFromTouch();
webview.setWebViewClient(new MyWebClient());

这里是WebViewClient

class MyWebClient extends WebViewClient {

@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
}

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}

public void onPageFinished(WebView view, final String url) {
}
}

关于android - 使用 loadDataWithBaseURL 禁用 webview 中的链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57165203/

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