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
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
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories