我想以字符串的形式获取我在 webview 中触摸的那个标签的内容。
假设我有 5 个段落并且我触摸了一个段落,然后我想要该段落的内容为字符串。我怎样才能做到这一点?谢谢
我想以字符串的形式获取我在 webview 中触摸的那个标签的内容。
假设我有 5 个段落并且我触摸了一个段落,然后我想要该段落的内容为字符串。我怎样才能做到这一点?谢谢
嗯,这很容易,但是您需要分部分进行,并且需要 JavaScript。
1.- 在您的 web 视图中启用 JavaScript。
web.getSettings().setJavaScriptEnabled(true); //"web" is the object of type WebView
2.- 在 WebView 和 Html 之间创建一个 JavaScript 接口。
public class JavaScriptInterface {
private Handler myHandler = new Handler();
public void getParagraph(final String paragraph){
myHandler.post(new Runnable() {
@Override
public void run() {
//Do something with the String
}
});
}
}
注意:在方法运行中,您将使用从 Html 检索到的字符串添加您需要处理的任何内容。此类可以在您创建 WebView 的类中创建,或者如果您要在另一个活动中使用相同的行为,则可以将其作为单独的类创建。
3.- 将接口发送到 WebView。
web.addJavascriptInterface(new JavaScriptInterface(), "android");
/* In this case "android" is the name that you will use from the Html to call
your methods if is not too clear yet, please keep reading */
4.- 您需要将 onClick 事件处理程序添加到每个 P 标签。
<p onclick="android.getParagraph(this.innerText);">Text inside the paragraph</p>
/*android was the name we set for the interface in step 3, getParagraph is the name
of the method created on step2,"this.innerText" retrieves the text inside the paragraph*/
注意:您在我的示例中看到的所有名称都可以更改,但是如果您更改 java 类的名称,请记住更改 html 中的所有调用