Решение, предоставленное выше, предоставляет текст с использованием свойства innerText, которое вернет вам весь текст в webView.Решение, которое я предлагаю ниже, поможет вам извлечь текст из видимой части веб-представления на экране.
Шаг 1. Требуется помощь javaScript, поэтому сначала включите javascript.
webView.addJavascriptInterface(new IJavascriptHandler(getActivity().getApplicationContext()), "Android"); //if your class extends a Fragment class
или
view.addJavascriptInterface(new IJavascriptHandler(this), "Android"); //if your class extends Activity.
Шаг 2. Создайте внутренний класс javaInterface.
final class IJavascriptHandler {
Context mContext;
IJavascriptHandler(Context c) {
mContext = c;
}
//API 17 and higher required you to add @JavascriptInterface as mandatory before your method.
@JavascriptInterface
public void processContent(String aContent)
{
//this method will be called from within the javascript method that you will write.
final String content = aContent;
Log.e("The content of the current page is ",content);
}
}
Шаг 3. Теперь необходимо добавить метод javascript.Вы напишите метод в виде строки, а затем загрузите его.Метод возвращает текст на основе предоставленного ему параметра.Итак, вам нужно 2 строки.Один из них загрузит метод javascript, а другой вызовет его.
Метод для загрузки метода javascript.
String javaScriptToExtractText = "function getAllTextInColumn(left,top,width,height){"
+ "if(document.caretRangeFromPoint){"
+ "var caretRangeStart = document.caretRangeFromPoint(left, top);"
+ "var caretRangeEnd = document.caretRangeFromPoint(left+width-1, top+height-1);"
+ "} else {"
+ "return null;"
+ "}"
+ "if(caretRangeStart == null || caretRangeEnd == null) return null;"
+ "var range = document.createRange();"
+ "range.setStart(caretRangeStart.startContainer, caretRangeStart.startOffset);"
+ "range.setEnd(caretRangeEnd.endContainer, caretRangeEnd.endOffset);"
+ "return range.toString();};";
Метод для вызова вышеуказанной функции.
String javaScriptFunctionCall = "getAllTextInColumn(0,0,100,100)";
//I've provided the parameter here as 0,0 i.e the left and top offset and then 100, 100 as width and height. So, it'll extract the text present in that area.
Шаг 4. Теперь вам нужно загрузить 2 вышеуказанных javascript-кода.
webView.loadURL("javascript:"+ javaScriptToExtractText);
//this will load the method.
view.loadUrl("javascript:window.Android.processContent("+javaScriptFunctionCall+");");
//this will call the loaded javascript method.
Наслаждайтесь.