android源码分析--MMS--ComposeMessageActivity

关注点:ComposeMessageActivity 涉及到DeleteMessageListener,Contact.UpdateListener,接口回调、MessageListItem用Handler处理点击事件、startActivityForResult 添加附件、RecipientsEditor自定义收件人控件、MsgListView、MsgListAdapter

1、DeleteMessageListener:点击删除会话框的确定键之后,回调改事件,onClick中用ConversationQueryHandler( extends AsyncQueryHandler)删除信息,onDeleteComplete之后会广播方式通知桌面widget,且触发MessageListAdapter( extends CursorAdapter)重写的onContentChanged()方法,最终接口OnDataSetChangedListener回调到ComposeMessageActivity startMsgListQuery()重新查询.

2、Contact.UpdateListener:当联系人有信息更新时会调用该方法,主要是涉及到名字、号码等更新,标题和会话列表的更新。联系人信息更新可能是通过Contacts应用修改的。

3、 ComposeMessageActivity.mMessageListItemHandler:显示详情、编辑、播放(图片、视频、音频、联系人附件、日历、幻灯片),这里比较有意思的是,MessageListItem的点击事件的响应起源是在MessageListItem的onItemClick,而处理却是在Activity,中间事件的传递用到了android.os.Message的基本用法,Message.obtain(Handler,Message);Message.sendToTarget();其中android.os.Message.obj=com.android.mms.ui.MessageItem

4、startActivityForResult彩信附件有多种形式,requestCode == REQUEST_CODE_XXX_XXX对应,使代码有整洁性。

5、RecipientsEditor:方便编辑多个收件人而定义的控件,本质是MultiAutoCompleteTextView,关注TextWatcher.beforeTextChanged onTextChanged afterTextChanged,正则表达式匹配号码, RecipientsEditor中关联ContactList显示多个联系人。

附上部分ListView关键代码:
// Initialize the list adapter with a null cursor.
mMsgListAdapter = new MessageListAdapter(this, null, mMsgListView, true, highlight);
mMsgListAdapter.setOnDataSetChangedListener(mDataSetChangedListener);//监听数据库变化
mMsgListAdapter.setMsgListItemHandler(mMessageListItemHandler);//处理点击事件
mMsgListView.setAdapter(mMsgListAdapter);
mMsgListView.setItemsCanFocus(false);
mMsgListView.setVisibility((mSendDiscreetMode || MessageUtils.isMailboxMode())
? View.INVISIBLE : View.VISIBLE);
mMsgListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值