项目上需要给TextView中特定格式文本加上”超链接“,让用户可以点击链接后,可以开启关心该uri的Activity。

如给”abc12345“加上链接,使其点击后,开启Activity,该Activity意图过滤器关心的uri scheme为”abc://“。

利用正则表达式,匹配出”abc12345“。
利用Linkify类给文字加上链接到”abc://abc12345”:

1
2
3
4
5
public void addLink(TextView text){
String localDesc = description;
text.setText(localDesc);
Linkify.addLinks(text, Pattern.compile("(ac\\d{5,})", Pattern.CASE_INSENSITIVE),"abc://");
}

这样用户点击后,内部会startActivity(intent);
该intent的data为 “abc://abc12345”,这样注册了该scheme IntentFilter的Activity就会被开启了。

当然,也可以给符合http协议的url自动加上超链接:

1
2
Pattern http = Pattern.compile("(http://(?:[a-z0-9.-]+[.][a-z]{2,}+(?::[0-9]+)?)(?:/\\S*)?)",Pattern.CASE_INSENSITIVE);
Linkify.addLinks(text,http,"http://");

用户点击后,开启的Intent 包含data为 “http://…”,这样就会开启浏览器,浏览该网址了。