在html文件中搜索并在列表中显示它

时间:2014-07-09 15:10:24

标签: android search webview

我正在尝试搜索存储在项目资源文件夹中的所有html文件中的单词。但我的方法只是在当前的html文件中搜索。

findBox = new EditText(this);
    findBox.setMinEms(30);
    findBox.setSingleLine(true);
    findBox.setHint("Ara...");
    findBox.setOnKeyListener(new OnKeyListener() {
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {

            if ((event.getAction() == KeyEvent.ACTION_DOWN)
                    && ((keyCode == KeyEvent.KEYCODE_ENTER))) {
                wv.findAll(findBox.getText().toString());
                try {
                    // Can't use getMethod() as it's a private method
                    for (Method m : WebView.class.getDeclaredMethods()) {
                        if (m.getName().equals("setFindIsUp")) {
                            m.setAccessible(true);
                            m.invoke(wv, true);
                            break;
                        }
                    }
                } catch (Exception ignored) {
                }
            }

            return false;
        }
    });

1 个答案:

答案 0 :(得分:1)

我认为您误解了WebView的工作原理。当您使用:

加载html文档时
WebView wv;
// ... some initialization here
wv.loadUrl("file:///android_asset/page.html");

它只加载一个特定页面,它不会帮助您在资产中的所有html文件中查找内容。

关于搜索所有文件:

1)获取资产目录中的所有文件名或其中的一些子目录。在下面的示例中,我获取了/assets/html中的所有文件:

String dirFrom = "html"
AssetManager am = res.getAssets();
String fileList[] = am.list(dirFrom);

2)为每个文件打开一个InputStream,并使用它来搜索其内容,类似于

AssetManager am = context.getAssets();
InputStream is = am.open("test.txt");

3)然后,如果您希望在WebView中显示所有内容,您将知道文件名,位置和ofc,现在您可以使用loadUrl加载每个文件。

在旁注上我注意到你正在使用:

  

public int findAll(String find)

你应该:

  

public void findAllAsync(String find)