2011-07-09 19 views
7

Mam ten fragment kodu:Otwórz odnośnik w WebView zamiast domyślnej przeglądarce

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

muszę otworzyć linków w WebView, a nie w przeglądarce ... czy to możliwe ?? jak mogę zrobić?

góry dzięki ..

Odpowiedz

5

Tak, można to zrobić, to całkiem proste zadanie z WebView, trzeba zadeklarować WebViewClient obiekt i zastąpić metodę public boolean shouldOverrideUrlLoading (WebView view, String url), nie można filtrować adresy URL lub podać kilka niestandardowych funkcjonalności .

W twoim przypadku, aby pozostać w WebView, musisz zwrócić wartość false w tej metodzie.

Zapoznaj się z this tutorial.

Pozdrowienia

edycja:

Wydaje Twoje pytanie jest w jaki sposób obsłużyć zdarzenia kliknij na adres URL TextView użytkownika. Jako it's suggested on this question możesz filtrować intencję ACTION_VIEW na swojej WebView zawierającej Aktywność. Jeśli potrzebujesz more guidance about intent-filters, check this out.

+0

Dzięki, ale cóż, to nie działa ... Nie mam WebView na starcie ... kiedy klikam na link, chciałbym pokazać widok sieci zamiast przeglądarki^^ czy to possibile? – Erenwoid

+0

@Erenwoid, Teraz dostaję twoje pytanie, chcesz obsłużyć Intent, gdy jest wywoływany na kliknięciu adresu URL TextView. Zobacz moją edytowaną odpowiedź. – mdelolmo

+0

To skały^^ dziękuję! – Erenwoid

7

dodatkowo, możesz to zrobić.

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

Najlepsza odpowiedź, jeśli nie chcesz dodawać filtrów zamiany do działania przeglądania w Internecie. –

+0

Najlepsza odpowiedź! – Michalsx

Powiązane problemy