gpt4 book ai didi

android - 从 WebView 保存数据

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:39:22 24 4
gpt4 key购买 nike

我需要保存在 WebView 上显示的数据。我通过保存在 WebViewClient 中发出的所有 URL 请求并将它们发送到后端服务来实现这一点。后端服务稍后会请求这些文件。

问题是 WebViewClient 正在运行自己的周期并且响应不可见,这导致我为每个资源发出两个请求。

有没有办法直接在 WebViewClient 中获取数据?

这是一段当前有效的代码:

private class Client extends WebViewClient{
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
plainText = //get plain text and save it
webView.loadDataWithBaseURL(url, plainText, MIME_TYPE_TEXT_HTML, UTF_8_ENCODING, null);
return true;
}
@SuppressWarnings("deprecation")
@Override
public synchronized WebResourceResponse shouldInterceptRequest(WebView view, String url) {
// we need to make sure it does nothing in this one for >= lollipop as in lollipop the call goes through both methods
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
return interceptRequest(view, url, null);
}
return null;
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
WebResourceResponse response = super.shouldInterceptRequest(view, request);
final String url = request.getUrl().toString();
return interceptRequest(view, url, response);
}

private WebResourceResponse interceptRequest(WebView webView, String url, WebResourceResponse webResourceResponse) {
addUrlToDownloadQueue(url);
return webResourceResponse;
}

addUrlToDownloadQueue(url); 负责将所有 url 传递给检索所有源的服务。

有没有办法在不将数据传递给后端服务的情况下获取 WebViewClient 上的数据?

最佳答案

我发布了另一个答案,因为这个答案太长,不适合评论。

好吧,如果您不控制网页,那么跟随那个问题是不好的。事实上,正如 android 开发人员指南中所述:“警告:使用 addJavascriptInterface() 允许 JavaScript 控制您的 Android 应用程序。这可能是一个非常有用的功能或危险的安全问题。当 WebView 中的 HTML 不可信时(例如,部分或所有 HTML 均由未知人员或进程提供),那么攻击者可以包含执行您的客户端代码的 HTML 以及可能是攻击者选择的任何代码。”

要获取网页中的数据,您可以使用 webView.loadUrl("javascript: document.getElementById("example").value;");

要从网页中获取数据,请尝试引用此 page.

如果您需要更多帮助,请联系我!

关于android - 从 WebView 保存数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37045498/

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