0

我正在尝试在单击时启动活动的文本字符串中创建可单击的链接。我使用 Linkify() 来检测文本中的链接。此功能能够添加文本链接,但只能添加 Web URL。我需要将我的输出转换为 ClickableSpan 以便我可以实现这种技术

如何让 Linkify() 的已识别链接成为指向活动的 ClickableSpans?

以下是我在 Linkify 中使用的代码:

// Linkify parameters
final static Pattern pattern = Pattern.compile("\\[[^]]*]"); // defines the fact that links are bound by [square brackets]
final String scheme = "http://"; // TODO: Currently this is just a blank link
Linkify.addLinks(linkText, pattern, scheme);
4

2 回答 2

0

如何让 Linkify() 的已识别链接成为指向活动的 ClickableSpans?

调用 后addLinks(),调用getText()从 中检索Spanned对象TextView。该对象将有一系列URLSpan对象,每个匹配的链接一个——您可以通过调用getSpans(). 您需要注意每个跨度的开始和结束位置(通过getSpanStart()getSpanEnd()),删除URLSpan并用您自己的跨度替换它以执行您想要的操作。

于 2012-09-05T22:39:24.040 回答
0

对于您想要实现的目标,只需覆盖startActivity()您的方法Activity并使用文本中的 URL 拦截ACTION_VIEW意图可能更简单。像这样的东西:

public class MyActivity extends Activity {

    @Override
    public void startActivity(Intent intent) {
        final String action = intent.getAction();
        if (action.equals(Intent.ACTION_VIEW)) {
            // launch our other activity instead
            Intent ourIntent = new Intent(this, MyOtherActivity.class);
            ourIntent.setData(intent.getData());
            super.startActivity(ourIntent);

            // we're done!
            return;
        }

        // else, normal handling by the framework
        super.startActivity(intent);
    }

    // the rest of your activity code

}

作为参考,这里是触发上述方法的 URLSpan 的源代码。startActivity()

于 2012-09-06T13:53:46.147 回答