Chirag
Chirag

Reputation: 478

How to detect clicks on links in webview without changing something in website

I am using webview in fragments, currently i am able to display message saying "no internet connection" only when webview initially appears and there is no internet connection. I want to display that message when user disconnects internet after loading one page in webview, or some other problem occurs in connection.

Upvotes: 2

Views: 1040

Answers (1)

dindinii
dindinii

Reputation: 655

We can detect following HTML elements as per Android API Document.

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 

I think you will be able to get all events using WebView's setOnTouchListener function.

WebView has inner class named HitTestResult. HitTestResult class will help us to find the HTML element which press when user click on WebView.

HitTestResult class has only two method.

getExtra() : It return String. String has HTML element which is clicked by user getType() : It return integer. It is used to identify which HTML element is clicked by user. You can do like :

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;
        }
    });

Edited : Refer for perfect answer : Detect click on HTML button through javascript in Android WebView

Upvotes: 1

Related Questions