java - 获取 Android EditText 中点击链接的 URL 或 HTML

标签 java android android-edittext spannable

我正尝试在 EditText检索点击链接的 URL。我想触摸一个链接,然后对其 URL 做一些事情。我得到的最接近的是确定光标所在的跨度是否为 URLSpan 样式:

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 中的所有 URL,但仍然不知道点击了哪个。如果我可以做类似这样的事情:EditText.getPortion(start, end).getUrls(),那会更接近,但到目前为止我还没有看到类似的方法。

最佳答案

我知道这是 4 年前的回复,但要为 future 的访问者回答:

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

关于java - 获取 Android EditText 中点击链接的 URL 或 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18481617/

相关文章:

java - Apache beam 类未找到异常 : Jackson

java - java中时间戳未正确转换为日期

像按钮一样的 Android EditText 字段

java - 是否可以从 Web 浏览器访问 JAX-WS?

java - 抽象类包含来自接口(interface)的抽象方法是否被认为是更好的形式?

android - 带图片和文字的ListView

java - 如果 Android Activity 位于前台,则向其传递通知 Intent 并启动它的适当方法是什么?

java - Android minSdkVersion >= 19 需要 Realm.close() 吗?

android - 当手机方向发生变化时,EditText 如何保留其值而不是 textview?

android - 如果不是 DateFormat 则拒绝