Android Studio - 使用 webView.findAllAsync(text) 突出显示网站上的文本,然后在文本上创建点击操作

标签 android

我正在创建一个 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/

相关文章:

android - 可在哪里/何时使用 describeContents()?

android - 使用 uiautomator 测试通知栏图标

java - 识别指纹时使用Intent

android - Kotlin 轻松访问 Activity 之外的资源

java - 在 Android 模拟器或设备上运行 Java SE 库的 JUnit 测试

android - 在 android google maps API v2 中隐藏标记信息窗口

android - AsyncTask 挂起

我在那里进行检查后,android lint 仍然给出 "Call requires API ..."错误

android - 错误 - 导入谷歌播放服务

android - Facebook Messenger 可访问性