Android中的Linkify可以用来判断一个字符串是电话号码、Email、网址或是其他,如果是网址就会自动启动浏览器打开该网页;如果是电话号码就会自动打开拨号器进行打电话 public boolean onKey(View v, int keyCode, KeyEvent event) { // TODO Auto-generated method stub tv.setText(et.getText()); Linkify.addLinks(tv, Linkify.PHONE_NUMBERS|Linkify.WEB_URLS|Linkify.EMAIL_ADDRESSES); return false; } 使用Match Filter 在你定义的MatchFilter中实现acceptMatch方法,来为RegEx样式匹配添加额外的条件。当一个潜在的匹配发现时,acceptMatch被触发,匹配的开始点和结束点(包括被查找的整个文本)以参数的形式传入。 接下来的代码显示了一个MatchFilter的实现,它取消任何之前是一个“!”的匹配。 class MyMatchFilter implements MatchFilter { public boolean acceptMatch(CharSequence s, int start, int end) { return (start == 0 || s.charAt(start-1) != ‘!’); } } 使用Transform Filter Transform Filter为格式化文本字符串提供了更大的自由度,允许你修改由链接文本自动生成的隐式URI。减少链接文本和目标URI的耦合能更加自由地决定如何显示数据字符串给用户。 使用Transform Filter,在你定义的TransformFilter中实现transformUrl方法。当Linkify找到正确的匹配后,它会调用transformUrl,传入使用的RegEx样式和它创建的默认URI字符串。你可以修改匹配的字符串,然后返回一个适合给其它Android应用程序“看”的URI。 下面的TransformFilter实现将匹配的文本转换成小写的URI: class MyTransformFilter implements TransformFilter { public String transformUrl(Matcher match, String url) { return url.toLowerCase(); } } |
|