In my application, I am showing epub HTML files in webview
using EPUBLIB. My problem is that I want to use bookmark functionality for my epub reader. For that I want to fetch text from webview
which is showing page from my epub's HTML file and then use that text in my bookmark activity to show the user what they have bookmarked. How can I achieve this?
HTML, CSS and JavaScript for Android WebView Depending on your requirements, you can fetch the contents of the WebView from the web using webView. loadUrl("<url>") method, or you can bind the code directly (e.g. after loading it from assets) using webView. loadDataWithBaseURL("", html, "text/html", "UTF-8", null) .
Enable JavaScript JavaScript is disabled in a WebView by default. You can enable it through the WebSettings attached to your WebView . You can retrieve WebSettings with getSettings() , then enable JavaScript with setJavaScriptEnabled() . WebView myWebView = (WebView) findViewById(R.
Android System WebView lets applications display browser windows in an app instead of transporting the user to another browser. Android developers use WebView when they want to display webpages in a Google app or other application.
Getting the plain text content from a webview is rather hard. Basically, the android classes don't offer it, but javascript does, and Android offers a way for javascript to pass the information back to your code.
Before I go into the details, do note that if your html structure is simple, you might be better off just parsing the data manually.
That said, here is what you do:
To clarify, I'll post a working (but very rough) code example below. It displays a webview on the top, and a textview with the text-based contents on the bottom.
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"); } }
Using the following 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>
Java:
wvbrowser.evaluateJavascript( "(function() { return ('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>'); })();", new ValueCallback<String>() { @Override public void onReceiveValue(String html) { Log.d("HTML", html); // code here } });
Kotlin:
web_browser.evaluateJavascript("(function() { return ('<html>'+document.getElementsByTagName('span')[0].innerText+'</html>'); })();") { html -> Toast.makeText(this@Your_activity, html, Toast.LENGTH_SHORT).show() // code here }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With