链接textview中的链接,让用户选择打开链接而不是内部浏览器

时间:2014-10-09 18:31:59

标签: android linkify

我有TextView将Linkify应用于该链接以创建我的链接。

Linkify.addLinks(mTextView, Linkify.ALL);

现在,当用户点击链接时,应用会在本机浏览器中打开链接。但我希望用户可以通过显示"使用"完成操作来选择他们喜欢的浏览器。对话框。

如何将此功能添加到链接链接?

1 个答案:

答案 0 :(得分:1)

您可以使用ClickableSpan,并使用它设置textview

公共类LinkSpan扩展了ClickableSpan {

  private OnClickListener listener;

  public LinkSpan(OnClickListener listener){
    this.listener = listener;
  }

  @Override
  public void onClick(View widget) {
    listener.onClick(widget);
  }
}

public class LinkifyUtil {

  private Activity activity;

  public LinkifyUtil(Activity activity){
    this.activity = activity; 
  }

  public void addAutoChooserLink(final Intent intent,TextView text){
    String source = text.getText().toString();
    String pattern = "Android";
    Pattern p = Pattern.compile(pattern);
    Matcher m = p.matcher(source);
    SpannableString s = new SpannableString(source);
    while(m.find()){
      s.setSpan(new LinkSpan(new OnClickListener(){

        @Override
        public void onClick(View v) {
          //you can define the intent
          intent.setAction(Intent.ACTION_VIEW);
          intent.setData(Uri.parse("http://developer.android.com"));
          Intent.createChooser(intent, "Choose App");
          activity.startActivity(intent);
        }
      }), m.start(), m.start()+pattern.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
    }
    text.setText(s);
    text.setMovementMethod(LinkMovementMethod.getInstance());
  }  
}

您可以像这样使用LinkifyUtil:

Intent intent = new Intent();       
LinkifyUtil linkify = new LinkifyUtil(this);
linkify.addAutoChooserLink(intent, text);