Android 自动识别TextView或者EditView里的url并在自己的应用程序里打开

本文介绍如何在Android中使用TextView显示带链接的文本,并实现点击链接在应用程序内打开而非默认浏览器。通过自定义Pattern匹配URL,利用Linkify进行链接化处理,并通过特定Activity接收点击事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

            Textview有自己的属性 android:autoLink="web",设置这个属性,Android可以帮我们自动识别网址,点击就可以打开,但是这样是跳转的默认浏览器,我们希望在自己的应用程序里打开。这时候我们需要用到Linkify。

          

        private static final String SCHEMA ="com.youku.paike://message_private_url";
    	private static final String PARAM_UID ="uid";

               private void extractUrl2Link(TextView v) {
			Pattern wikiWordMatcher = Pattern.compile("(((http\\:\\/\\/)|(https\\:\\/\\/)|(www\\.))[a-zA-Z0-9_\\.]+)");
			String mentionsScheme = String.format("%s/?%s=",SCHEMA, PARAM_UID);
			
			Linkify.addLinks(v, wikiWordMatcher, mentionsScheme);
		
		} 
        如上代码是我们对TextView的处理,其中Pattern是用来判别Uri的,这里甄别http、https、www开头的uri。

        然后我们另外写一个Activity来响应textview的点击事件。

        在AndroidManifest.xml里对这个Activity进行注册。代码如下:

        <activity android:name="MentionsActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="com.youku.paike" android:host="message_private_url"/>
</intent-filter>
</activity>

       然后在这个Activity对传过来的Uri进行处理。代码如下:

            

        private static final String SCHEMA ="com.youku.paike://message_private_url";
	private static final String PARAM_UID ="uid";
	private static final Uri PROFILE_URI = Uri.parse(SCHEMA);

       private void extractUidFromUri() {
		Uri uri = getIntent().getData();
		if (uri !=null && PROFILE_URI.getScheme().equals(uri.getScheme())) {
			uid = uri.getQueryParameter(PARAM_UID);
			
	    }
		if(uid.indexOf("www") == 0){
			uid = "http://"+uid;
		}else if(uid.indexOf("https") == 0){
			String bUid = uid.substring(5, uid.length());
			uid = "http"+bUid;
			
		}
	}
       uid就是我们获取的uri地址,这时候我们根据网络地址通过WebView就可以获取了。

       下面是优快云上的一个demo。

        http://download.youkuaiyun.com/detail/liuhanhan512/5441679

      

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值