Открыть ссылку в веб-браузере вместо браузера по умолчанию - PullRequest
7 голосов
/ 09 июля 2011

У меня есть этот кусок кода:

    TextView noteView = (TextView) view.findViewById(R.id.content);
    noteView.setMovementMethod(LinkMovementMethod.getInstance());
    noteView.setText(Html.fromHtml(noteView.getText().toString()));

Мне нужно открывать ссылки в веб-просмотре, а не в браузере ... это возможно ??как мне это сделать ??

Заранее спасибо ..

Ответы [ 2 ]

7 голосов
/ 11 ноября 2013

дополнительно, вы можете сделать это.

    package com.TextHtml;

    import android.app.Activity;  
    import android.content.Context;  
    import android.os.Bundle;  
    import android.text.Html;  
    import android.text.Spannable;  
    import android.text.SpannableStringBuilder;  
    import android.text.method.LinkMovementMethod;  
    import android.text.style.ClickableSpan;  
    import android.text.style.URLSpan;  
    import android.view.View;  
    import android.widget.TextView;  
    import android.widget.Toast;  
    public class TextHtml extends Activity {

        private TextView  tv;  
        static Context ctx=null;  
        @Override  
        public void onCreate(Bundle savedInstanceState) {  
            super.onCreate(savedInstanceState);  
            setContentView(R.layout.main);  
            ctx=this;  
            tv = (TextView) findViewById(R.id.tv);   
            String htmlLinkText = "<a href="/" mce_href="/""http://www.google.com/"><u>hello google </u></a>";     
            tv.setText(Html.fromHtml(htmlLinkText));  
            tv.setMovementMethod(LinkMovementMethod.getInstance());     
            CharSequence text = tv.getText();     
            if(text instanceof Spannable){     
                int end = text.length();     
                Spannable sp = (Spannable)tv.getText();     
                URLSpan[] urls=sp.getSpans(0, end, URLSpan.class);      
                SpannableStringBuilder style=new SpannableStringBuilder(text);     
                style.clearSpans();//should clear old spans     
                for(URLSpan url : urls){     
                    CustomerTextClick click = new CustomerTextClick(url.getURL());     
                    style.setSpan(click,sp.getSpanStart(url),sp.getSpanEnd(url),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);     
                }     
                tv.setText(style);     
            }  
        }  

        private static class CustomerTextClick extends ClickableSpan{     

            private String mUrl;     
            MyURLSpan(String url) {     
                mUrl =url;     
            }     
            @Override  
            public void onClick(View widget) {  
                // TODO Auto-generated method stub  
                Toast.makeText(ctx, "hello google!",Toast.LENGTH_LONG).show();  
            }     
        }  
    } 
5 голосов
/ 09 июля 2011

Да, вы можете сделать это, это довольно простая задача с WebView, вам нужно объявить объект WebViewClient и переопределить метод public boolean shouldOverrideUrlLoading (WebView view, String url), там вы можете фильтровать URL-адреса или предоставлять некоторые настраиваемые функции.

В вашем случае, чтобы остаться в WebView, вам нужно будет вернуть false для этого метода.

Ознакомьтесь с этим руководством .

С уважением

РЕДАКТИРОВАНИЕ:

Похоже, ваш вопрос заключается в том, как обрабатывать событие click для URL-адреса TextView.Поскольку предлагается по этому вопросу , вы можете отфильтровать намерение ACTION_VIEW в вашем WebView, содержащем Activity.Если вам нужно более подробное руководство по фильтрам намерений, проверьте это .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...