我正在创建一个 Android 应用程序,它必须在 WebSite 中找到一些东西,然后突出显示它并在其上创建点击操作。
我正在使用这种方法寻找字符串“文本”:
private void searchInWebViewContent(String text){
webView.findAllAsync(text);
}
此代码应在 webView 中找到所有字符串“文本”并突出显示它们。
但是...当我运行我的应用程序时,它不会突出显示“文本”。
其次,我想知道如何在单击网站上找到的每个突出显示的字符串“文本”时创建 Action 监听器。找的时候发现了这个方法:
void setFindListener (WebView.FindListener listener){
}
有谁知道如何解决我的问题? 等待重播。干杯。
好的,第一个现在可以工作了:
webview.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
if (textToSearch != null && textToSearch != "") {
webview.findAllAsync(textToSearch); // is not supposed to crash
try {
Method m = WebView.class.getMethod("setFindIsUp", Boolean.TYPE);
m.invoke(webview, true);
} catch (Throwable ignored) {
}
}
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
最佳答案
webview.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
if (textToSearch != null && textToSearch != "") {
webview.findAllAsync(textToSearch); // is not supposed to crash
// here i dont know how to create OnTouchListener on every textToSearch
//highlighted word. Here as an example I have just created it on webview
webview.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_UP) {
Intent myIntentActivity1 = new Intent(context, MapActivity.class);
//call N_X and wait for result
startActivity(myIntentActivity1);
return true;
}
return false;
}
});
try {
Method m = WebView.class.getMethod("setFindIsUp", Boolean.TYPE);
m.invoke(webview, true);
} catch (Throwable ignored) {
}
}
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
void setFindListener (WebView.FindListener listener)
{
}
如何为通过 findallasyc 方法创建的每个单词创建触摸事件?
关于Android Studio - 使用 webView.findAllAsync(text) 突出显示网站上的文本,然后在文本上创建点击操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37812113/