public class Test10Activity extends Activity {
TextView textView ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test10);
textView = (TextView) findViewById(R.id.text);
Pattern p = Pattern.compile("@(w+?)(?=W|$)(.)");
Linkify.addLinks(textView, p, "mxn://profile?uid=");
}
}
接收的时候跟上面一样:
public class Test9Activity extends Activity {
private String uid;
private static final Uri PROFILE_URI = Uri.parse("mxn://profile");
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test8);
extractUidFromUri();
}
private void extractUidFromUri() {
Uri uri = getIntent().getData();
if (uri != null && PROFILE_URI.getScheme().equals(uri.getScheme())) {
uid = uri.getQueryParameter("uid");
Log.d("=====", "uid from url: " + uid);
}
}
}
效果如下:
其实在上面的图上可以看到,www.google.com并没有被识别为链接(因为我们没有设置web模式)。需要注意的是,当需要使自定义 模式和内置模式web,phone等一起被识别时,一定要先声明内置模式,然后再声明自定义模式,而且不能在xml中通过autoLink属性声明, 否则自定义模式不起作用。因为在设置内置模式时,会先删除已有模式。
将上面的Java代码改为:
public class Test10Activity extends Activity {
TextView textView ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test10);
textView = (TextView) findViewById(R.id.text);
Pattern p = Pattern.compile("@(w+?)(?=W|$)(.)");
Linkify.addLinks(textView, Linkify.WEB_URLS);
Linkify.addLinks(textView, p, "mxn://profile?uid=");
}
}










