我正在做一个应用程序,我想在其中显示我的网站,但与较少的div元素。
在这个示例代码中,我使用了stackoverflow.com的网站,并试图隐藏div类菜单(主网站顶部的按钮)。
运行代码后,我将得到一个空白/白色的webview。我尝试的是使字符串html成为最终,然后调用它来设置webview的最终url。
代码:
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
import java.io.File;
public class MyCustomAsyncTask extends AsyncTask<File, Void, String> {
@Override
protected String doInBackground(File... params) {
Document doc = Jsoup.connect("http://stackoverflow.com/").get();
Elements ele = doc.select(":not(#hmenus)"); // ->>>>> Jsoup html
final String html = ele.toString();
}}
public class MainActivity extends Activity {
private WebView WebView;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebView = (WebView) findViewById(webView);
WebView.setWebChromeClient(new WebChromeClient());
WebView.getSettings().setJavaScriptEnabled(true);
WebView.getSettings().setDomStorageEnabled(true);
final String mime = "text/html";
final String encoding = "utf-8";
WebView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
// ->>>>>> Change the website --->>> insert call html value
WebView.loadData(html, mime, encoding);
}
});
}
}如何调用html final String html = ele.toString();的值并将其转换为WebView.loadData(html, mime, encoding);
发布于 2016-10-28 06:33:35
您没有正确地使用AsyncTask。你应该读这。
声明AsyncTask并实现用于获取网页的doInBackground和用于在其准备就绪时显示结果的onPostExecute:
private class GetData extends AsyncTask<Void, Void, String> {
// This is run in a background thread
@Override
protected String doInBackground(Void... params) {
try {
Document doc = Jsoup.connect("https://stackoverflow.com/")
.userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0")
.get();
Elements ele = doc.select("#hmenus");
html = ele.toString();
return html;
} catch (Exception e) {
Log.d("APP", e.toString());
}
return "error";
}
// This runs in UI when background thread finishes
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
Log.d("APP", "1");
WebView.loadData(result, mime, encoding);
}
}至于MainActivity,它必须调用AsyuncTask:
public class MainActivity extends Activity {
private WebView WebView;
String html = "Loading...";
final String mime = "text/html";
final String encoding = "utf-8";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebView = (WebView) findViewById(R.id.webview);
WebView.setWebChromeClient(new WebChromeClient());
WebView.getSettings().setJavaScriptEnabled(true);
WebView.getSettings().setDomStorageEnabled(true);
//Display "Loading..." message while waiting
WebView.loadData(html, mime, encoding);
//Invoke the AsyncTask
new GetData().execute();
}
}别忘了你的舱单上的internet-permission。
https://stackoverflow.com/questions/40296814
复制相似问题