How do I make a deep link string for example "myapp://product/123" clickable in android TextView. I know there are autoLink options like email, web and phone but there isn't any deeplink option. How do I make it clickable and launch the intent on click of that link?
            Asked
            
        
        
            Active
            
        
            Viewed 2,468 times
        
    5
            
            
        - 
                    what about using `android:autoLink="web"` attribute ? – Shree Krishna Mar 15 '16 at 05:26
- 
                    Didn't work... Since it's not a weblink – Samuel Robert Mar 15 '16 at 05:43
- 
                    That means you are trying to make some specific word clickable in `TextView` ? – Shree Krishna Mar 15 '16 at 06:40
- 
                    No. I was trying to make a deeplink string clickable – Samuel Robert Mar 15 '16 at 06:43
- 
                    upon the click I want to make an explicit intent and launch it so that I can go to specific activity that is registered with same intent filter and category – Samuel Robert Mar 15 '16 at 06:46
- 
                    Are you wanting this link to be clickable everywhere, or *only* within the context of a `TextView` inside your own app? – Alex Bauer Mar 15 '16 at 12:51
4 Answers
5
            you can do that by using ClickableSpan
eg.
ClickableSpan clickableSpan = new ClickableSpan() {
    @Override
    public void onClick(View textView) {
        startActivity(new Intent(MyActivity.this, NextActivity.class));
    }
    @Override
    public void updateDrawState(TextPaint ds) {
            super.updateDrawState(ds);
            ds.setUnderlineText(false);
        }
};
See this link How to set the part of the text view is clickable
0
            
            
        Just you have to make code as like below in java file.That can be you can click to any link from textview.
TextView t2 = (TextView) findViewById(R.id.text2);
t2.setMovementMethod(LinkMovementMethod.getInstance());
 
    
    
        Ravi Vaghela
        
- 3,420
- 2
- 23
- 51
0
            
            
        Just use this
YourTextView.setMovementMethod(LinkMovementMethod.getInstance());
 
    
    
        Ram Prakash Bhat
        
- 1,308
- 12
- 21
- 
                    
- 
                    if you added android:autoLink="web" in xml layout, then remove that property and try. – Ram Prakash Bhat Mar 15 '16 at 05:51
0
            
            
        Looking at https://stackoverflow.com/a/13509741/2914140, I wrote similar:
val url = "myapp://example.com/some_string"
textView.text = url
textView.setOnClickListener {
    startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(url)))
}
You don't even need <uses-permission android:name="android.permission.INTERNET" /> in AndroidManifest.
If you have an application, responding to myapp scheme and example.com host, it will be opened.
To format the textView like a link also write:
textView.hyperlinkStyle()
private fun TextView.hyperlinkStyle() {
    setText(
        SpannableString(text).apply {
            setSpan(
                URLSpan(""),
                0,
                length,
                Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
            )
        },
        TextView.BufferType.SPANNABLE
    )
}
 
    
    
        CoolMind
        
- 26,736
- 15
- 188
- 224
 
     
     
    