您的位置:首页 > 移动开发 > Android开发

android源码分析--MMS--ComposeMessageActivity

2015-10-14 20:07 465 查看
关注点: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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android