Android WebView提取HTML

时间:2016-01-04 12:21:01

标签: javascript java android html webview

基本上,我正在开发一个Android应用程序,用户可以访问页面的HTML内容,然后选择如何处理它,无论是写入文件系统,通过FTP上传等等。用户无法看到HTML但它存储它以供稍后查看。

我尝试添加一个JavaScript界面​​,然后将其添加到onPageFinished事件中,它只是不想交出HTML,这就是我所做的:

所以对于我的onPageFinished事件:

Webview wv = (WebView) findViewById(R.id.webbrowser);
wv.addJavascriptInterface(new JSEngine() , "JSEngine");
  public void onPageFinished(WebView wv , String html){
   //code to execute
   wv.loadUrl("javascript: window.JSEngine.processHTML(document.body.innerHTML)");
  }

在processHTML中执行的代码由于某些原因无法共享,但我可以告诉你html变量是空的。

然后是我的javascript界面​​:

Class JSEngine{
  @JavascriptInterface
  public void processHTML(String html){
    //code to execute
    //html variable is null
  }
}

有什么能解决我的问题吗?我的所有权限都已设置好,我的班级工作正常,直到webview移交html。

1 个答案:

答案 0 :(得分:0)

如果用户不需要查看HTML,请忘记WebView,使用常规HTTP流打开页面,阅读HTML数据并使用它。

我怀疑网页实际上是预览的,在这种情况下,您最好的选择是阅读HTML数据流,然后转身并在WebView中显示loadDataWithBaseURL()

另一种可能性是覆盖WebViewClient.onLoadResource()并打开HTTP流来读取该URL上的数据。这是多余的,因为WebView将会读取数据本身,但问题是WebView只是不会挂钩它正在读取的HTTP数据流。