国外互联网科技网站,2021年中国十大电商平台排名,北京网站模板下载,网站关键词推广企业要从Android的WebView中获取页面上的数据#xff0c;通常有几种常见的方法#xff1a;
JavaScript Interface#xff1a;通过JavaScript和Android Interface进行通信。这种方法允许你在JavaScript中调用Android的方法#xff0c;反之亦然。
Evaluate JavaScript#xff…要从Android的WebView中获取页面上的数据通常有几种常见的方法
JavaScript Interface通过JavaScript和Android Interface进行通信。这种方法允许你在JavaScript中调用Android的方法反之亦然。
Evaluate JavaScript直接从WebView中执行JavaScript代码并获取执行结果。
下面详细说明这两种方法
方法一使用JavaScript Interface 创建一个Java Interface
先创建继承自Object的类并添加您希望在JavaScript中调用的方法。在方法上添加JavascriptInterface注解。
public class MyJavaScriptInterface { JavascriptInterface public void getDataFromWeb(String data) { // 处理从Web传来的数据 Log.d(“WebData”, data); } } 设置JavaScript Interface
在你的Activity或Fragment中通过addJavascriptInterface方法将该接口添加到WebView中。
WebView webView (WebView) findViewById(R.id.webview); webView.getSettings().setJavaScriptEnabled(true); // 启用JavaScript webView.addJavascriptInterface(new MyJavaScriptInterface(), “AndroidInterface”); 调用Android Interface
在网页的JavaScript中通过window.AndroidInterface.getDataFromWeb(data)来调用Android的方法。
方法二使用Evaluate JavaScript 这种方法允许直接从WebView中执行JavaScript代码并获取执行结果。
在WebView设置中启用JavaScript
WebView webView (WebView) findViewById(R.id.webview); webView.getSettings().setJavaScriptEnabled(true); // 启用JavaScript 使用evaluateJavascript方法
你可以通过evaluateJavascript方法直接从WebView中执行JavaScript代码并获取结果。
webView.evaluateJavascript( “(function() { return document.body.textContent; })();”, new ValueCallback() { Override public void onReceiveValue(String value) { // value 是 JavaScript 执行结果 Log.d(“WebData”, value); } }); 总结 如果你需要不断地与网页交互并获取数据使用JavaScript Interface可能是更好的选择。如果只需要获取某些特定的数据evaluateJavascript可能是更简单、更直接的方法。
以上方法都需要确保WebView已经加载完页面可以添加一个WebViewClient并在onPageFinished方法中执行这些操作
webView.setWebViewClient(new WebViewClient() { Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); // 在这里调用evaluateJavascript或者操作JavaScript Interface } });