2013-08-28 35 views
1

我试图获取点击链接的URLEditText。我想触摸一个链接,然后使用其URL进行操作。我已经得到的最接近的是,以确定是否在光标坐在跨度是URLSpan风格:获取Android EditText中点击链接的URL或HTML

int s1 = Math.max(mText.getSelectionStart(), 0); 
int s2 = Math.max(mText.getSelectionEnd(), 0); 
Spannable raw = new SpannableString(mText.getText()); 
CharacterStyle[] spans = raw.getSpans(s1, s2, CharacterStyle.class); 
for (CharacterStyle span : spans) { 
    if(span.getClass().equals(android.text.style.URLSpan.class)){ 
     //is a link, but what is the URL? 

    } 
} 

如果我把它全部转换成HTML字符串,然后我不知道如何与的光标位置纯文本到html文本。我可以通过getUrls()获得EditText中的所有网址,但仍不知道点击了哪个网址。如果我能做到这样的事情:EditText.getPortion(start, end).getUrls(),那会更接近,但我目前还没有看到类似的方法。

回答

2

试试这个代码,

EditText editText = (EditText) findViewById(R.id.edittext); 
editText.setText(someContent); 
Linkify.addLinks(editText, Linkify.ALL); 
Log.d(TAG, "HTML: " + Html.toHtml(editText.getEditableText())); 

,并请参阅本教程还

http://developer.android.com/reference/android/text/util/Linkify.html

+0

谢谢,但我并没有试图将网址变成链接。我试图在点击链接文本时获取链接文字的网址。 – Ael

0

我意识到这是一个4岁的回应,但回答为将来游客:

for (CharacterStyle span : spans) { 
    if(span.getClass().equals(android.text.style.URLSpan.class)){ 
     //you almost had it here, just cast the span as a URLspan 
     URLSpan u = (URLSpan)spans[j]; 
     String span_url = u.getURL(); 
    } 
}