Nano Hash - криптовалюты, майнинг, программирование

Как получить элементы HTML-страницы (кнопка, ввод, изображения) в Android WebView

Я загружаю онлайн-страницу html в своем веб-просмотре и хочу загрузить активность для конкретной кнопки, нажатой на онлайн-странице html (а не на локальной HTML-странице)

Я нахожу что-то, но это не отвечает моему требованию.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    webView = (WebView) findViewById(R.id.webView);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setPluginsEnabled(true);
    webView.setHorizontalScrollBarEnabled(false);
    webView.loadUrl("https://accounts.google.com/DisplayUnlockCaptcha");
    webView.setBackgroundColor(0x00000000);

    webView.setOnTouchListener(new View.OnTouchListener(){
        @Override
        public boolean onTouch(View v, MotionEvent event) {
             WebView.HitTestResult hr = ((WebView)v).getHitTestResult();
                Log.i("TESTING In OnTouch ", "getExtra = "+ hr.getExtra() + "\t\t Type=" + hr.getType()+
                        "\t\t Ancher Tag = " +HitTestResult.SRC_ANCHOR_TYPE+
                        "\t\t Ancher Tag = " +HitTestResult.UNKNOWN_TYPE+
                        "\t\t Ancher Tag = " +HitTestResult.ANCHOR_TYPE
                        );
             return false;
        }
    });
}

  • Если вы можете кодировать HTML-страницу, то это возможно с использованием javascript. см. мой ответ здесь console8272 uncaught referenceerror имя функции не определено1, в то время как "> stackoverflow.com/questions/18654009/ 11.09.2013
  • Кетан, вы используете локальный HTML, а не онлайн-страницу 11.09.2013

Ответы:


1
    int     ANCHOR_TYPE     HitTestResult for hitting a HTML::a tag
    int     EDIT_TEXT_TYPE  HitTestResult for hitting an edit text area
    int     EMAIL_TYPE  HitTestResult for hitting an email address
    int     GEO_TYPE    HitTestResult for hitting a map address
    int     IMAGE_ANCHOR_TYPE   HitTestResult for hitting a HTML::a tag which contains HTML::img
    int     IMAGE_TYPE  HitTestResult for hitting an HTML::img tag
    int     PHONE_TYPE  HitTestResult for hitting a phone number
    int     SRC_ANCHOR_TYPE     HitTestResult for hitting a HTML::a tag with src=http
    int     SRC_IMAGE_ANCHOR_TYPE   HitTestResult for hitting a HTML::a tag with src=http + HTML::img
    int     UNKNOWN_TYPE    Default HitTestResult, where the target is unknown 

Класс HitTestResult имеет только два метода.

getExtra(): возвращает строку. Строка содержит элемент HTML, на который нажимает пользователь

getType() : возвращает целое число. Он используется для определения того, какой элемент HTML щелкнул пользователь.

    public class MyWebView extends Activity {
        /** Called when the activity is first created. */
        String TAG = this.getClass().getSimpleName();
        WebView wv;
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            wv = (WebView) findViewById(R.id.MyWebView);
            wv.getSettings().setJavaScriptEnabled(true);
            wv.setWebViewClient(new VideoWebViewClient());
            wv.getSettings().setUserAgentString("Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
            wv.loadUrl("http://www.w3schools.com/html/tryit.asp?filename=tryhtml_form_radio");
            wv.setOnTouchListener(new View.OnTouchListener() {

                public boolean onTouch(View v, MotionEvent event) {
                    WebView.HitTestResult hr = ((WebView)v).getHitTestResult();

                    Log.i(TAG, "getExtra = "+ hr.getExtra() + "\t\t Type=" + hr.getType());
                    return false;
                }
            });
        }
        private class VideoWebViewClient extends WebViewClient {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {

                view.loadUrl(url);

                return false;
            }

        }

    }
11.09.2013
  • когда я пытаюсь увеличить getExtra, он возвращает только следующее. getExtra = null Тип = 0. Мне требовался идентификатор элемента нажатой кнопки. 11.09.2013
  • Есть ли какие-либо другие изменения в коде для архивации результатов. Вышеприведенный код не работает на моем конце. 11.09.2013
  • Любая другая проблема с такой же проблемой, ваше руководство облегчит мне работу. Ищу ваш ответ. 12.09.2013
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..