SS06Dec86
SS06Dec86

Reputation: 209

How to get href links opens into webView when clicking from html string in android?

I am displaying a html string into a textview which contains some links, i am diplaying that with the help of below code :

itemContent.setText(Html.fromHtml(jo.getString("itemContent")));
                            itemContent.setMovementMethod(LinkMovementMethod.getInstance());

clicking on that links direct me to web browser and successfully opens that link, but i want to open that links into my app's webView. How could i do this??

Upvotes: 1

Views: 3632

Answers (3)

SS06Dec86
SS06Dec86

Reputation: 209

Yeah!!! finally i've done with what i want. I used a webView client to achieve this. The following is the method in which I have passed my html String containing url's :

@SuppressLint("SetJavaScriptEnabled")
    private void loadWebView(WebView webView,String htmlString)
    {
     try {

             final String mimeType = "text/html";
             final String encoding = "UTF-8";


                WebViewClient yourWebClient = new WebViewClient()
                {
                    // Override page so it's load on my view only
                    @Override
                    public boolean shouldOverrideUrlLoading(WebView  view, String  url)
                    {
                     // This line we let me load only pages inside  Webpage
                     if ( url.contains("") == true )
                        // Load new URL Don't override URL Link
                        return false;

                     // Return true to override url loading (In this case do nothing).
                     return true;
                    }
                };


                // Get Web view
                webView.getSettings().setJavaScriptEnabled(true);   
                webView.getSettings().setSupportZoom(true);       //Zoom Control on web (You don't need this 
                                                       //if ROM supports Multi-Touch      
                webView.getSettings().setBuiltInZoomControls(true); //Enable Multitouch if supported by ROM
                webView.setWebViewClient(yourWebClient);

                // Load URL
                webView.loadDataWithBaseURL("", htmlString, mimeType, encoding, "");

        } catch (Exception e) {
            e.printStackTrace();
        }

    }

Upvotes: 2

umair.ali
umair.ali

Reputation: 2714

Instead of using default LinkMovementMethod, make your own implementation like...

itemContent.setMovementMethod(new MovementMethod() {

        @Override
        public boolean onTrackballEvent(TextView widget, Spannable text,
                MotionEvent event) {
            // TODO: Do here what you want
            return false;
        }

        @Override
        public boolean onTouchEvent(TextView widget, Spannable text,
                MotionEvent event) {
            // TODO: Do here what you want
            return false;
        }

        @Override
        public void onTakeFocus(TextView widget, Spannable text, int direction) {
            // TODO: Do here what you want

        }

        @Override
        public boolean onKeyUp(TextView widget, Spannable text, int keyCode,
                KeyEvent event) {
            // TODO: Do here what you want
            return false;
        }

        @Override
        public boolean onKeyOther(TextView view, Spannable text, KeyEvent event) {
            // TODO: Do here what you want
            return false;
        }

        @Override
        public boolean onKeyDown(TextView widget, Spannable text, int keyCode,
                KeyEvent event) {
            // TODO: Do here what you want
            return false;
        }

        @Override
        public boolean onGenericMotionEvent(TextView widget, Spannable text,
                MotionEvent event) {
            // TODO: Do here what you want
            return false;
        }

        @Override
        public void initialize(TextView widget, Spannable text) {
            // TODO: Do here what you want

        }

        @Override
        public boolean canSelectArbitrarily() {
            // TODO: Do here what you want
            return false;
        }
    });

See documentation HERE to find your best suitable method among them...:)

Hope this helps...

Upvotes: 1

Broak
Broak

Reputation: 4187

The way i'd go about this is simply set the text of the textview as the url, then on click use

myWebView.loadUrl(tV.getText().toString());

Upvotes: 0

Related Questions