当前位置:首页 > 编程笔记 > 正文
已解决

Android 快速实现隐私协议跳转链接

来自网友在路上 162862提问 提问时间:2023-10-31 08:15:07阅读次数: 62

最佳答案 问答题库628位专家为你答疑解惑

首先在string.xml创建对应字串

  <string name="link">我已仔细阅读并同意<annotation value="privacy_policy">《隐私政策》</annotation><annotation value="service_agreement">《服务协议》</annotation></string>

然后在java代码中初始化Checkbox

private void initCheckBox() {CheckBox checkBox = findViewById(R.id.cb);//1、创建 SpannableStringBuilderSpannableStringBuilder sb = new SpannableStringBuilder(getText(R.string.link));//2、获取Annotation数组Annotation[] annotations = sb.getSpans(0, sb.length(), Annotation.class);//3、遍历 Annotation 数组for (Annotation annotation : annotations) {String annotationValue = annotation.getValue();//注意:这里的value就是xml中 <annotation value="xxx"> 做到一一对应即可if (annotationValue.equals(USER_AGREEMENT) || annotationValue.equals(PRIVACY_AGREEMENT)) {int start = sb.getSpanStart(annotation);int end = sb.getSpanEnd(annotation);//4、构建ClickableSpanClickableSpan clickableSpan = new ClickableSpan() {@Overridepublic void onClick(View widget) {String url = "https:www.baidu.com";switch (annotationValue) {case USER_AGREEMENT:url = "https:www.baidu.com";break;googlecase PRIVACY_AGREEMENT:url = "https:www.google.com";break;}//5、根据annotationValue跳转对应urlIntent intent = new Intent();intent.setAction(Intent.ACTION_VIEW);intent.setDataAndType(Uri.parse(url), "*/*");startActivity(intent);}@Overridepublic void updateDrawState(TextPaint ds) {ds.setColor(Color.BLUE);//显示链接下划线ds.setUnderlineText(true);}};sb.setSpan(clickableSpan, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);}}checkBox.setText(sb);//关键一步,决定链接是否可以点击checkBox.setMovementMethod(LinkMovementMethod.getInstance());}

在这里插入图片描述


拓展—从聊天信息中解析链接

    private void initLinkText() {TextView tvLink = findViewById(R.id.tv_link);String linkStr = "跳转百度https://www.baidu.com或者跳转google https://www.google.com";SpannableStringBuilder urlSpannableStringBuilder = createdUrlSpannableStringBuilder(linkStr);tvLink.setText(urlSpannableStringBuilder);//设置链接颜色tvLink.setLinkTextColor(Color.BLUE);//关键一步,决定链接是否可以点击tvLink.setMovementMethod(LinkMovementMethod.getInstance());}public SpannableStringBuilder createdUrlSpannableStringBuilder(String linkStr){Matcher m = Pattern.compile("(((https|http)?://)?([a-z0-9]+[.])|(www.))"+ "\\w+[.|\\/]([a-z0-9]{0,})?[[.]([a-z0-9]{0,})]+((/[\\S&&[^,;\u4E00-\u9FA5]]+)+)?([.][a-z0-9]{0,}+|/?)").matcher(linkStr);SpannableStringBuilder sb = new SpannableStringBuilder(linkStr);//1、用正则找出链接while(m.find()){String url = m.group();//2、构造URLSpanURLSpan urlSpan = new URLSpan(url);sb.setSpan(urlSpan,m.start(),m.end(),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);}return sb;}

在这里插入图片描述

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"Android 快速实现隐私协议跳转链接":http://eshow365.cn/6-28458-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!