Android Java - 从网页获取纯文本(警报系统)

时间:2011-12-21 06:42:25

标签: java android webview

我想要做的事情应该非常简单,但是我几乎没有Java / Android经验。

我在Eclipse中有一个WebView设置。我希望该网页转到http://example.com/mypage.php。在该页面上将是文本“OK”或“ALERT”。

我需要知道如何查看这些单词的页面。这将是页面上的所有内容。

请帮忙吗?谢谢!

1 个答案:

答案 0 :(得分:3)

尽管可以做到,但没有直接的方法来做你想做的事。首先,定义一个类似于:

的接口
public interface WebInterfaceDelegate {
    public void receivedHtml(String html);
}

然后,定义一个要在WebView中向JavaScript运行时公开的类,类似于:

public static class WebViewJavaScriptInterface {
    private WebInterfaceDelegate delegate;

    public WebViewJavaScriptInterface(WebInterfaceDelegate delegate) {
        this.delegate = delegate;
    }

    public void htmlLoaded(String html) {
        if (delegate != null) {
            delegate.receivedHtml(html);
        }
    }
}

然后,让你的Activity实现上面定义的界面,例如:

public class AndroidWebViewActivity extends Activity implements WebInterfaceDelegate {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //...
        WebView webView = (WebView)findViewById(R.id.webView1);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.addJavascriptInterface(new WebViewJavaScriptInterface(this), "AndroidAPI");

        webView.loadUrl("http://your.url.com");
    }

    //...

    public void receivedHtml(String html) {
        //inspect the HTML here
        System.out.println("Got html:  " + html);
    }
}

最后,在页面中添加一些JavaScript,如:

<script>
    window.onload = function() {
        AndroidAPI.htmlLoaded(document.body.innerHTML);
    }
</script>

所以你可以做到这一切,或者你可以使用URL.openStream()这样的东西直接连接到目标网页,并从套接字读取标记而不是WebView。要做到这一点很简单:

InputStream response = new URL("http://example.com/mypage.php").openStream();
//read the data from the response into a buffer, then inspect the buffer

您可以在此处找到一些其他信息:

http://docs.oracle.com/javase/6/docs/api/java/net/URL.html