Проблема с поиском в веб-браузере Android 2.2

У меня есть веб-просмотр в моей деятельности. Теперь, когда я использую метод WebView.findAll() для поиска текста в веб-просмотре, он не выделяет совпадающие слова.

Он отлично работает в Android 1.6, но не работает в 2.2.


person Brijesh Masrani    schedule 13.09.2010    source источник
comment
У меня точно такая же проблема. Было ли найдено какое-либо решение?   -  person Ilya Izhovkin    schedule 18.01.2011
comment
Нет, я не нашел никакого решения.   -  person Brijesh Masrani    schedule 18.01.2011
comment
Мне нужно решение для 4.0.3. Принятый ответ работает для 2.2, но не для 3.2 или выше. Ответ jianwu_chen работает для 3.2, но не для 4.0.3.   -  person Mike Keskinov    schedule 21.09.2012
comment
Привет, у кого-нибудь есть решение этой проблемы?   -  person user4232    schedule 16.04.2013


Ответы (2)


В системе отслеживания проблем Android есть ошибка по этому поводу: http://code.google.com/p/android/issues/detail?id=9018

Я разместил этот код сразу после WebView.findAll(), и подсветка заработала:

try
{
    Method m = WebView.class.getMethod("setFindIsUp", Boolean.TYPE);
    m.invoke(webView, true);
}
catch (Throwable ignored){}
person Ilya Izhovkin    schedule 01.02.2011
comment
Это звучит как неприятный способ сделать это. Но это работает! Спасибо. - person Peter Fortuin; 12.07.2011
comment
У меня тут проблема. Мой текст выделен, но метод findAll() возвращает 0. Я не могу понять, почему?? Любую строку, которую я могу взять, она правильно их выделяет, но метод findAll() всегда возвращает 0. Будем признательны за любую помощь :) - person Antrromet; 29.02.2012

В Android 4.0.3 кажется, что setFindIsUp является частным методом. Так что приведенный выше код не будет работать. Поскольку метод getMethod() не возвращает приватные методы. Ниже приведен обходной путь для вызова частного метода, который работает для 4.0.3:

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(view, true);
            break;
        }
    }
}catch(Exception ignored){}  
person jianwu_chen    schedule 28.05.2012
comment
Хотя этот код успешно находит setFindIsUp, но у меня он не работает. Подсветка не появляется в 4.0.3, но появилась в 2.2 (с этим кодом). - person Mike Keskinov; 21.09.2012
comment
Извините, для 2.2 и 3.2 работает, а для 4.0.3 нет! Мне нужно решение для 4.0.3! - person Mike Keskinov; 21.09.2012