![]() |
Linkify is a class that lets you create links from a TextView or a Spannable. You can create links not just to web pages, but also to locations on the map, emails and even phone numbers. |
*Note: the examples bellow may not always work in the emulator.
Web address:
TextView myWebSite = new TextView(this); myWebSite .setText("http://http://www.dzone.com/"); Linkify.addLinks(myWebSite , Linkify.WEB_URLS);

Phone number:
TextView myPhone = (TextView) findViewById(R.id.my_web_site); myPhone .setText(“5552323233”); Linkify.addLinks(myPhone , Linkify.PHONE_NUMBERS);

Map address:
TextView myLocation = new TextView(this); myLocation.setText("436 Mayfield Ave, Stanford, CA"); Linkify.addLinks(myLocation , Linkify.MAP_ADDRESSES); mainLayout.addView(myLocation);

Email address:
TextView myEmail= (TextView) findViewById(R.id.my_web_site); myEmail.setText(“aviyehuda@gmail.com”); Linkify.addLinks(myEmail , Linkify.EMAIL_ADDRESSES);

Auto detect:
Use Linkify.ALL to automatically detect the link type.
Linkify.addLinks(myTextView , Linkify.ALL);
More than one option:
You can choose more than a single option for the link type.
Linkify.addLinks(myTextView, Linkify.PHONE_NUMBERS | Linkify.WEB_URLS);
Using pattern:
You can use a regular expression for detecting text parts and transform only them to links instead of the whole text.
TextView myCustomLink = new TextView(this); Pattern pattern = Pattern.compile("[a-zA-Z]+&"); myCustomLink.setText("press Linkify& or on Android& to search it on google"); Linkify.addLinks(myCustomLink,pattern, "http://www.google.ie/search?q="); mainLayout.addView(myCustomLink);

MatchFilter:
MatchFilter is used for more complicated filters.
MatchFilter myMatchFilter = new MatchFilter() { @Override public boolean acceptMatch(CharSequence cs, int start, int end) { return start > 48; } }; TextView myCustomLink2 = new TextView(this); Pattern pattern2 = Pattern.compile("[a-zA-Z]+"); myCustomLink2.setText("press one of these words to search it on google: Android Linkify dzone"); Linkify.addLinks(myCustomLink2,pattern2, "http://www.google.ie/search?q=", myMatchFilter, null); mainLayout.addView(myCustomLink2);

TransformFilter:
So fat the text we have filtered stayed the same. But sometimes you need the text to be different than the text which is appended to the link.
TransformFilter myTransformFilter = new TransformFilter() { @Override public String transformUrl(Matcher match, String url) { return url.substring(1); //remove the $ sign } }; TextView myCustomLink3 = new TextView(this); Pattern pattern3 = Pattern.compile("\\$[a-zA-Z]+"); myCustomLink3.setText("press $Linkify or on $Android to search it on google"); Linkify.addLinks(myCustomLink3,pattern3, "http://www.google.ie/search?q=", null, myTransformFilter); mainLayout.addView(myCustomLink3);

man this is cool.
I use
TextView myWebSite = (TextView) findViewById(R.id.my_web_site);
myWebSite.setText(“http://http://www.google.es/”);
Linkify.addLinks(myWebSite , Linkify.WEB_URLS);
and in .xml
but don´t work in my aplication
the emulator said:
The application has stopped unexpectedly. please try again
What I am doing wrong?
What is written in the logger?
Thank you very much! 😀
This is the most lucid explanation among all other sites . Thanks a ton.
It ‘s very useful
Thanks for writting this up.
TextView myLocation = new TextView(this);
myLocation.setText(“436 Mayfield Ave, Stanford, CA”);
Linkify.addLinks(myLocation , Linkify.MAP_ADDRESSES);
mainLayout.addView(myLocation);
Tried the code. All options work except for MAP_Addresses. It doesnot show with a clickable text. Is any googlemap api key activation is required?