2013-08-28 1 views
1

Я пытаюсь загрузить URL-адрес кликнутой ссылки в EditText. Я хочу коснуться ссылки, а затем сделать что-то со своим URL-адресом. Ближайший я получил, чтобы определить, является ли интервал, где курсор сидит является URLSpan стиль:Получите URL-адрес или HTML-ссылку на ссылку в Android EditText

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. Я могу получить все URL-адреса в EditText с помощью getUrls(), но до сих пор не знаю, какой из них был нажат. Если бы я мог сделать что-то вроде: 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

Спасибо, но я не пытаюсь сделать веб-адреса в ссылках. Я пытаюсь получить URL-адрес текста ссылки при нажатии. – 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(); 
    } 
}