如何从webview获取文本

时间:2012-11-27 01:38:26

标签: java javascript android webview

看起来如此简单却变得几乎不可能。我的WebView中显示了文本,我需要获取它。

我尝试过各种各样的事情。

webview.loadUrl("javascript:window.HTMLOUT.showHTML(document.innerText);");
webview.loadUrl("javascript:window.HTMLOUT.showHTML(document.documentElement.innerText);");

webview.loadUrl("javascript:window.HTMLOUT.showHTML(document.getElementsByTagName('auth')[0].innerHTML);");

webview.loadUrl("javascript:window.HTMLOUT.showHTML(document.getElementsByTagName('body')[0].innerText);");

webview.loadUrl("javascript:window.HTMLOUT.showHTML(document.getElementsByTagName('html')[0].innerText);");

和其他很多东西。我对这两个电话没有定义。

它总是试图以随机xml的形式返回。

class MyJavaScriptInterface   
{  
    @SuppressWarnings("unused")  
    public void showHTML(String html)  
    {  
        Log.d("SHOWING", html);

        new AlertDialog.Builder(myApp)  
            .setTitle("HTML")  
            .setMessage(html)  
            .setPositiveButton(android.R.string.ok, null)  
            .setCancelable(false)  
            .create()  
            .show();  
    }
    public void showHTML(Object html)  
    {
        Log.d("Some random object", "Some random object");
    }
    public void showHTML(XML html)  
    {
        Log.d("Some random XML", "Some random XML");
    }  
}  

这就是它的样子。

任何帮助?

1 个答案:

答案 0 :(得分:2)

以下是从您的网页向Android设备发送文字的示例。它在android上创建了一个'toast'弹出消息。

将此添加到您的网页浏览中:

myWebView.addJavascriptInterface(new JavaScriptInterface(this), "Android");

将此课程添加到您的项目中:

 public class JavaScriptInterface {
    Context mContext;

    JavaScriptInterface(Context c) {
        mContext = c;
    }

    public void showToast(String toast) {
        Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
    }
}

使用javascript将您的网站信息发送到您的Android:

    <script type="text/javascript">
           Android.showToast("This is a message");
    </script>