从webview Android中读取HTML中的元素

时间:2011-04-21 06:35:23

标签: android rss

我需要从HTML文件中读取元素。我从webview加载它们但我找不到最好的阅读方式。

代码:content_html

package com.android.webview;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class ViewLink extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    final WebView browser = (WebView)findViewById(R.id.browser);
    /* JavaScript must be enabled if you want it to work, obviously */
    browser.getSettings().setJavaScriptEnabled(true);

    /* Register a new JavaScript interface called HTMLOUT */
    browser.addJavascriptInterface(new MyJavaScriptInterface(), "HTMLOUT");

    /* WebViewClient must be set BEFORE calling loadUrl! */
    browser.setWebViewClient(new WebViewClient() {
        @Override
        public void onPageFinished(WebView view, String url)
        {
            /* This call inject JavaScript into the page which just finished loading. */
            browser.loadUrl("javascript:window.HTMLOUT.showHTML('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");

            /*
            read elements in content_html
            */
        }

    });


    browser.loadUrl("http://vnexpress.net/gl/rss/");
}

final Context myApp = this;
Builder builder;

String content_html;

/* An instance of this class will be registered as a JavaScript interface */
class MyJavaScriptInterface
{
    @SuppressWarnings("unused")
    public void showHTML(String html)
    {
       builder = new AlertDialog.Builder(myApp);
            builder.setTitle("HTML")
            .setMessage(html)
            .setPositiveButton(android.R.string.ok, null)
        .setCancelable(false)
        .create()
        .show();
            content_html = html;
            Log.i("html", html+" ");
    }
}

1 个答案:

答案 0 :(得分:1)

试试这个适合我的那个

class MyJavaScriptInterface  
        {  
            @SuppressWarnings("unused")  
            public void showHTML(String html)  
            {  
                System.out.println("Html...."+html);
            }
        } 

活动

        browser.getSettings().setJavaScriptEnabled(true);
        browser.getSettings().setPluginsEnabled(true);
        browser.getSettings().setSupportZoom(true);
        browser.getSettings().setBuiltInZoomControls(true);
        browser.setBackgroundColor(Color.TRANSPARENT);
        browser.addJavascriptInterface(new MyJavaScriptInterface(), "HTMLOUT");  
        browser.setWebViewClient(new WebViewClient() {  
        @Override  
        public void onPageFinished(WebView view, String url)  
        {  
            browser.loadUrl("javascript:window.HTMLOUT.showHTML('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");  
        }  
        });  
        browser.loadUrl(link);