点击短信内容,获取短信内的号码和链接

博客讲述了如何修改Android系统中短信应用的点击事件,原本功能是点击短信显示所有号码和链接的菜单,新需求是点击特定号码或链接仅对其产生菜单。关键涉及ComposeMessageActivity.java、MessageListView及其适配器MessageListAdapter,通过URLSpan获取自动识别的号码和链接,通过autoLink属性实现。
摘要由CSDN通过智能技术生成

最近接到的任务其实只是修改这个功能,原功能是:

点击到短信,系统根据识别出的数字段和链接段弹出ListView的选择菜单,用户可以对这些号码和链接进行拨号发短信或者打开网页的操作。

修改后的需求是:

点击短信中相应的号码或链接,只针对该号码或链接产生菜单。

我们先看看某的实现方法:

(1)首先利用我查找代码一贯的高效低智商的找到这个短信会话相关的类:ComposeMessageActivity.java

其中涉及到短信会话列表的是这样一个类

private MessageListView mMsgListView;

初始化的方法是

initMessageList()

(2)进入这个方法就可以看到mMsgListView的onItemClick方法,继续追踪方法里面调用的((MessageListItem) view).onMessageListItemClick();

当然也不要忽略一段重要代码,那就是mMsgListView的adapter,

mMsgListView.setAdapter(mMsgListAdapter);这个会在下章关于修改后需求的实现中介绍。

还有mMsgListView.setItemsCanFocus(false);关于这个设置的意义,主要是因为这个短信会话ListView中隐藏了多选的CheckBox,如果不设置这个属性,焦点将被item获取而使得CheckBox无法获得焦点而不能勾选。

(3)继续下面,看来要接触到真相了!

onMessageListItemClick()中可以清晰的看到点击事件到菜单的产生:

方法前面都是些关于item中元素的判断就忽略了,看到关键数组:final URLSpan[] spans = mBodyTextView.getUrls();

mBodyTextView肯定就是短信主体内容无疑了,那这个getUrls()方法是什么呢?

先转到配置文件中,来理解这个urls:

<TextView
        android:id="@+id/text_view"
        android:layout_width="wrap_content"
        android:layout_h
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值