在我的应用程序中,我显示 epub HTML 文件webview
using EPUBLIB。
我的问题是我想为我的 epub 阅读器使用书签功能。为此我想从中获取文本webview
它显示我的 epub 的 HTML 文件中的页面,然后在我的书签活动中使用该文本向用户显示他们已添加书签的内容。
我怎样才能实现这个目标?
从网络视图获取纯文本内容相当困难。基本上,android 类不提供它,但是JavaScript 确实,Android 提供了一种让 javascript 将信息传递回代码的方法。
在详细介绍之前,请注意,如果您的 html 结构很简单,您最好手动解析数据.
也就是说,这就是你要做的:
- 启用 JavaScript
-
添加您自己的 javascript 接口类,允许 javascript 与您的 Android 代码进行通信
- 注册您自己的网页视图客户端,覆盖页面完成插入一些 javascript
- 在 javascript 中,获取元素.innerText标签,并将其传递到您的 javascript 界面。
为了澄清这一点,我将在下面发布一个工作(但非常粗略)的代码示例。它在顶部显示一个 web 视图,在底部显示一个带有基于文本的内容的文本视图。
package test.android.webview;
import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.TextView;
public class WebviewTest2Activity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
WebView webView = (WebView) findViewById(R.id.webView);
TextView contentView = (TextView) findViewById(R.id.contentView);
/* An instance of this class will be registered as a JavaScript interface */
class MyJavaScriptInterface
{
private TextView contentView;
public MyJavaScriptInterface(TextView aContentView)
{
contentView = aContentView;
}
@SuppressWarnings("unused")
public void processContent(String aContent)
{
final String content = aContent;
contentView.post(new Runnable()
{
public void run()
{
contentView.setText(content);
}
});
}
}
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(new MyJavaScriptInterface(contentView), "INTERFACE");
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url)
{
view.loadUrl("javascript:window.INTERFACE.processContent(document.getElementsByTagName('body')[0].innerText);");
}
});
webView.loadUrl("http://shinyhammer.blogspot.com");
}
}
使用以下 main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:layout_weight="0.5" />
<TextView
android:id="@+id/contentView"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:layout_weight="0.5" />
</LinearLayout>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)