简体   繁体   English

从android中的html字符串单击时,如何获取href链接打开到webView?

[英]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 : 我在一个textview中显示一个html字符串,其中包含一些链接,我在下面的代码的帮助下diplaying它:

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. 点击该链接将我引导至网络浏览器并成功打开该链接,但我想将该链接打开到我的应用程序的webView中。 How could i do this?? 我怎么能这样做?

Yeah!!! 是啊! finally i've done with what i want. 最后我完成了我想要的东西。 I used a webView client to achieve this. 我使用webView客户端来实现这一目标。 The following is the method in which I have passed my html String containing url's : 以下是我传递包含url的html字符串的方法:

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

    }

Instead of using default LinkMovementMethod, make your own implementation like... 而不是使用默认的LinkMovementMethod,使您自己的实现像......

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... 希望这可以帮助...

我这样做的方法只是将textview的文本设置为url,然后单击使用

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM