2011-07-09 8 views
7

tengo este pedazo de código:Abrir un enlace en una vista web en lugar de navegador por defecto

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

necesito para abrir enlaces en una vista web, no en un navegador ... es esto posible ?? ¿¿Como lo puedo hacer??

Gracias de antemano ..

Respuesta

5

Sí, se puede hacer eso, es tarea bastante sencilla, con vista Web, tiene que declarar un objeto WebViewClient y reemplazar el método public boolean shouldOverrideUrlLoading (WebView view, String url), allí se puede filtrar las URLs o dar algunas funciones personalizadas .

En su caso, para permanecer en la vista Web, lo que se necesita para volver falsa en ese método.

Salida this tutorial.

Saludos

Editado:

Parece que su pregunta es cómo manejar el evento click en el URL de la Vista de Texto. Como it's suggested on this question, puede filtrar el intento ACTION_VIEW en su WebView que contiene actividad. Si necesita more guidance about intent-filters, check this out.

+0

Gracias pero bueno, esto no funciona ... No tengo WebView al principio ... cuando hago clic en un enlace, me aparece la vista web en lugar del navegador ^^ es Posible? – Erenwoid

+0

@Erenwoid, ahora recibo su pregunta, desea manejar la intención cuando se envía en el clic de la url de TextView. Bueno, mira mi respuesta editada. – mdelolmo

+0

Eso me gusta ^^ ¡gracias! Pero – Erenwoid

7

adicional, se puede hacer esto.

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

Mejor respuesta si no desea agregar filtros intención de la actividad vista web. –

+0

¡La mejor respuesta de todas! – Michalsx

Cuestiones relacionadas