基本上,我正在开发一个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。
答案 0 :(得分:0)
如果用户不需要查看HTML,请忘记WebView
,使用常规HTTP流打开页面,阅读HTML数据并使用它。
我怀疑网页实际上是预览的,在这种情况下,您最好的选择是阅读HTML数据流,然后转身并在WebView
中显示loadDataWithBaseURL()
另一种可能性是覆盖WebViewClient.onLoadResource()
并打开HTTP流来读取该URL上的数据。这是多余的,因为WebView
将会读取数据本身,但问题是WebView
只是不会挂钩它正在读取的HTTP数据流。