我正在尝试搜索存储在项目资源文件夹中的所有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;
}
});
答案 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)