如何在WebView Android上显示网页的一部分
我正在尝试从网页中提取一小部分并加载到Webview中,我尝试按照链接中给出的解决方案进行操作,但是它不起作用
htmlDocument = Jsoup.connect(htmlPageUrl).get();element = htmlDocument.getElementsByClass("darewod");
String html = element.toString();
String mime = "text/html";
String encoding = "utf-8";
我已经尝试了以下两种方法来加载到webview,但似乎不起作用,它只是在UI上打印HTML
wv1.loadDataWithBaseURL(null, html, "text/html", "utf-8", null); wv1.loadData(html, "text/html", null);
你能告诉我我是否在这里想念任何东西吗?
回答:
您正在加载没有适当结构的
html代码(因此,所有定义head
都将丢失,如CSS引用),并且没有初始文档(或使用基本url加载),所有相对路径都将损坏。
<div class="darewod"> <a title="Workout of the Day" href="/workouts/lower-abs-workout.html" rel="alternate"><img src="/images/grid/wod/2016/wod_nov8.jpg" alt="Workout of the Day"></a> </div>
您可以做什么:用所选元素替换文档的主体,然后保留有关基础的结构和信息:
WebView wv;Handler uiHandler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
wv = (WebView)findViewById(R.id.webView);
wv.setWebViewClient(new MyWebViewClient());
new BackgroundWorker().execute();
}
// load links in WebView instead of default browser
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return false;
}
@RequiresApi(21)
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
view.loadUrl(request.getUrl().toString());
return false;
}
}
private class BackgroundWorker extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... arg0) {
getDarewod();
return null;
}
public void getDarewod(){
try {
Document htmlDocument = Jsoup.connect("http://darebee.com/").get();
Element element = htmlDocument.select("#gkHeaderMod > div.darewod").first();
// replace body with selected element
htmlDocument.body().empty().append(element.toString());
final String html = htmlDocument.toString();
uiHandler.post(new Runnable() {
@Override
public void run() {
wv.loadData(html, "text/html", "UTF-8");
}
});
} catch (IOException e) {
e.printStackTrace();
}
}
}
以上是 如何在WebView Android上显示网页的一部分 的全部内容, 来源链接: utcz.com/qa/407058.html